欢迎光临散文网 会员登陆 & 注册

(6)Linux驱动开发入门的打开方式

2023-03-21 23:50 作者:豆豆满江红  | 我要投稿

一、对于普通引脚的配置流程

参考恩智浦官网的数据手册:IMX6ULL 参考手册.pdf

(1)时钟使能

“Chapter 18: Clock Controller Module(CCM)”(P698)

(2)IO复用

“Chapter 32: IOMUX Controller(IOMUXC)”:About IO

分为GPR(Secure Non-VolatileStorage,直译过来就是安全的非易性存储)和SNVS(Secure Non-VolatileStorage,直译过来就是安全的非易性存储)

例如:IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO00

可复用 复用与 SION和MUX_MODE有关

“Chapter 4 External Signals and Pin Multiplexing”

只查看每个IO能复用什么外设;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

二、编写启动文件

此部分对于了解STM32的读者可能较为熟悉,在芯片启动的过程中,需要从汇编过渡到C语言的环境,在我们使用STM32的时候,ST公司帮我们编写了启动文件,有兴趣的小伙伴可以看一下,但是我看不太懂。

对于我们目前阶段,启动文件很简单,目的就是设置好芯片的起始ROM,RAM以及应用的栈大小。这些在STM32的开发过程中都未曾涉及。在一些DSP的初始化过程中涉及到过。

像这样,都是汇编,但是都是基础汇编指令。查查可以明白。这里需要注意的是,栈指针为0x80200000,栈大小 0X80200000-0X80000000=0X200000=2MB,对于刚开始2MB已经足够了。


三、程序烧录

此部分注重理解,与之前的STM32的MDK不同之处,更加细化了编译链接的过程,而不是MDK一键化的处理

分为:编译->链接->下载

arm-linux-gnueabihf-gcc -g -c led.s -o led.o

链接:将.o文件连接起来 形成可执行文件;-Ttext 0X87800000指定链接地址

arm-linux-gnueabihf-ld -Ttext 0X87800000 led.o -o led.elf

转换为bin格式;-O binary选择转换格式

arm-linux-gnueabihf-objcopy -O binary -S -g led.elf led.bin

三、烧写到SD卡上

将 imxdownload 拷贝到工程根目录下,也就是和 led.bin 处于同一个文件夹下

给予 imxdownload 可执行权限

烧写:./imxdownload led.bin /dev/sdd1

完成!

具体打开方式可以选择 一 汇编 二 C语言 三 类似STM32 的库函数模式,下图为C语言开发图 地址等数据均可以在数据手册中找到

试着自己写一写,可以感觉更加了解此芯片的底层架构,自此LED灯被点亮了,也意味着此芯片被征服了。



(6)Linux驱动开发入门的打开方式的评论 (共 条)

分享到微博请遵守国家法律