(6)Linux驅(qū)動(dòng)開(kāi)發(fā)入門的打開(kāi)方式
一、對(duì)于普通引腳的配置流程
參考恩智浦官網(wǎng)的數(shù)據(jù)手冊(cè):IMX6ULL 參考手冊(cè).pdf
(1)時(shí)鐘使能
“Chapter 18: Clock Controller Module(CCM)”(P698)
(2)IO復(fù)用
“Chapter 32: IOMUX Controller(IOMUXC)”:About IO
分為GPR(Secure Non-VolatileStorage,直譯過(guò)來(lái)就是安全的非易性存儲(chǔ))和SNVS(Secure Non-VolatileStorage,直譯過(guò)來(lái)就是安全的非易性存儲(chǔ))
例如:IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO00
可復(fù)用 復(fù)用與 SION和MUX_MODE有關(guān)
“Chapter 4 External Signals and Pin Multiplexing”
只查看每個(gè)IO能復(fù)用什么外設(shè);input-output multiplexer
(3)IO配置
同在32章,但是MUX 改為PAD
IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO00(SW_PAD_CTL_PAD_GPIO1_IO00 SW PAD Control Register)
?(4)GPIO通用配置(P1358)
DR:data register
GDIR:direction register
ICR:interrupt configuration register
IMR:interrupt mask register
ISR:interrupt status register
EDGE_SEL:edge select register
二、編寫啟動(dòng)文件
此部分對(duì)于了解STM32的讀者可能較為熟悉,在芯片啟動(dòng)的過(guò)程中,需要從匯編過(guò)渡到C語(yǔ)言的環(huán)境,在我們使用STM32的時(shí)候,ST公司幫我們編寫了啟動(dòng)文件,有興趣的小伙伴可以看一下,但是我看不太懂。
對(duì)于我們目前階段,啟動(dòng)文件很簡(jiǎn)單,目的就是設(shè)置好芯片的起始ROM,RAM以及應(yīng)用的棧大小。這些在STM32的開(kāi)發(fā)過(guò)程中都未曾涉及。在一些DSP的初始化過(guò)程中涉及到過(guò)。

像這樣,都是匯編,但是都是基礎(chǔ)匯編指令。查查可以明白。這里需要注意的是,棧指針為0x80200000,棧大小 0X80200000-0X80000000=0X200000=2MB,對(duì)于剛開(kāi)始2MB已經(jīng)足夠了。
三、程序燒錄
此部分注重理解,與之前的STM32的MDK不同之處,更加細(xì)化了編譯鏈接的過(guò)程,而不是MDK一鍵化的處理
分為:編譯->鏈接->下載
arm-linux-gnueabihf-gcc -g -c led.s -o led.o
鏈接:將.o文件連接起來(lái) 形成可執(zhí)行文件;-Ttext 0X87800000指定鏈接地址
arm-linux-gnueabihf-ld -Ttext 0X87800000 led.o -o led.elf
轉(zhuǎn)換為bin格式;-O binary選擇轉(zhuǎn)換格式
arm-linux-gnueabihf-objcopy -O binary -S -g led.elf led.bin
三、燒寫到SD卡上
將 imxdownload 拷貝到工程根目錄下,也就是和 led.bin 處于同一個(gè)文件夾下
給予 imxdownload 可執(zhí)行權(quán)限
燒寫:./imxdownload led.bin /dev/sdd1
完成!
具體打開(kāi)方式可以選擇 一 匯編 二 C語(yǔ)言 三 類似STM32 的庫(kù)函數(shù)模式,下圖為C語(yǔ)言開(kāi)發(fā)圖 地址等數(shù)據(jù)均可以在數(shù)據(jù)手冊(cè)中找到

試著自己寫一寫,可以感覺(jué)更加了解此芯片的底層架構(gòu),自此LED燈被點(diǎn)亮了,也意味著此芯片被征服了。