通過(guò)匯編點(diǎn)亮led
在裸機(jī)狀態(tài)下通過(guò)匯編點(diǎn)亮led,即沒(méi)有操作系統(tǒng),(uboot kernel rootfs 都不需要實(shí)現(xiàn))。
led點(diǎn)亮原理
1.GPIO復(fù)用
根據(jù)原理圖,找到led對(duì)應(yīng)的引腳(pin),復(fù)用為GPIO(只有GPIO才能控制輸入輸出)
芯片手冊(cè)查詢(xún)寄存器的方法,以CSI_HSYNC為例,在IOMUXC章節(jié)搜索CSI_HSYNC 找到
關(guān)鍵字是MUX意為復(fù)用,20E_01E0為該寄存器的地址,根據(jù)手冊(cè)將其復(fù)用為GPIO
即將該寄存器的值設(shè)置為0b101
2. PAD屬性
引腳的電氣屬性配置,如驅(qū)動(dòng)能力、上拉/下拉選擇等,占時(shí)不太清楚,按要求設(shè)置
3.GPIO.GDIR
控制GPIO為輸入還是輸出。芯片手冊(cè)查詢(xún)方法
在GPIO章節(jié),找到GPIO memory map 中的GPIOx_GDIR,如想將GPIO4_IO20設(shè)置為輸出
那么就需要找到GPIO4_GDIR的寄存器,然后將該寄存器的第20位設(shè)置位1
4.GPIO.DR
控制輸出高低電平,芯片手冊(cè)查詢(xún)方法同上,找到GPIOx_DR,設(shè)置對(duì)應(yīng)的寄存器
yocto編譯led.bin
在yocto工程中創(chuàng)建recipes,結(jié)構(gòu)如下
led.s和Makefile不多解釋?zhuān)琹ed.bb如下
SUMMARY = " led test "
DESCRIPTION = " my led "
LICENSE = "CLOSED"
FILESEXTRAPATHS_prepend := "${THISDIR}/:"
#設(shè)置源碼路徑,在bitbake在執(zhí)行時(shí)會(huì)從當(dāng)前路徑的led目錄中獲取源碼,目錄名最好與bb文件名稱(chēng)相同
SRC_URI = "file://led/"
#設(shè)定工作路徑 編譯時(shí)會(huì)將SRC_URI 下的文件unpack到S路徑下
S = "${WORKDIR}/led"
# 為了確保我們使用的是交叉編譯器
DEPENDS = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}binutils"
EXTRA_OEMAKE = "'CROSS_COMPILE=${TARGET_PREFIX}'"
# 添加任務(wù)來(lái)編譯匯編文件
do_compile() {
#相當(dāng)于在 S = "${WORKDIR}/led" 下執(zhí)行make ,前面 EXTRA_OEMAKE 設(shè)定了交叉編譯工具
oe_runmake
}
使用bitbake -c compile -f led 即可編譯得到led.bin文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-811105.html
燒錄
直接將led.bin 燒錄到sd卡是肯定不能執(zhí)行的,因?yàn)樽龅氖锹銠C(jī)使用,從sd卡啟動(dòng)時(shí),片內(nèi)的rom代碼是無(wú)法直接將led.bin 加載到內(nèi)存運(yùn)行的,必須在led.bin 前面加上一段配置代碼,后面學(xué)到了繼續(xù)分析。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-811105.html
到了這里,關(guān)于imx6ull基于yocto工程的l匯編點(diǎn)亮ed的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!