企业网站设计收费,世界500强企业排名中国名单,有域名有服务器怎么做网站,新浪云怎么做自己的网站通过汇编点亮led
在裸机状态下通过汇编点亮led#xff0c;即没有操作系统#xff0c;(uboot kernel rootfs 都不需要实现#xff09;。
led点亮原理
1.GPIO复用
根据原理图#xff0c;找到led对应的引脚#xff08;pin)#xff0c;复用为GPIO#xff08;只有GPIO才能…通过汇编点亮led
在裸机状态下通过汇编点亮led即没有操作系统(uboot kernel rootfs 都不需要实现。
led点亮原理
1.GPIO复用
根据原理图找到led对应的引脚pin)复用为GPIO只有GPIO才能控制输入输出 芯片手册查询寄存器的方法以CSI_HSYNC为例在IOMUXC章节搜索CSI_HSYNC 找到 关键字是MUX意为复用20E_01E0为该寄存器的地址根据手册将其复用为GPIO 即将该寄存器的值设置为0b101
2. PAD属性
引脚的电气属性配置如驱动能力、上拉/下拉选择等占时不太清楚按要求设置
3.GPIO.GDIR
控制GPIO为输入还是输出。芯片手册查询方法 在GPIO章节找到GPIO memory map 中的GPIOx_GDIR如想将GPIO4_IO20设置为输出 那么就需要找到GPIO4_GDIR的寄存器然后将该寄存器的第20位设置位1
4.GPIO.DR
控制输出高低电平芯片手册查询方法同上找到GPIOx_DR设置对应的寄存器
yocto编译led.bin
在yocto工程中创建recipes结构如下 led.s和Makefile不多解释led.bb如下
SUMMARY led test
DESCRIPTION my led
LICENSE CLOSEDFILESEXTRAPATHS_prepend : ${THISDIR}/:#设置源码路径在bitbake在执行时会从当前路径的led目录中获取源码目录名最好与bb文件名称相同
SRC_URI file://led/#设定工作路径 编译时会将SRC_URI 下的文件unpack到S路径下
S ${WORKDIR}/led# 为了确保我们使用的是交叉编译器
DEPENDS virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}binutilsEXTRA_OEMAKE CROSS_COMPILE${TARGET_PREFIX}# 添加任务来编译汇编文件
do_compile() {
#相当于在 S ${WORKDIR}/led 下执行make 前面 EXTRA_OEMAKE 设定了交叉编译工具oe_runmake
}
使用bitbake -c compile -f led 即可编译得到led.bin
烧录
直接将led.bin 烧录到sd卡是肯定不能执行的因为做的是裸机使用从sd卡启动时片内的rom代码是无法直接将led.bin 加载到内存运行的必须在led.bin 前面加上一段配置代码后面学到了继续分析。