博客介绍 leds.s文件 makefile文件 文件将解释: 执行makefile文件 删除第一步中的1.使能所有外设时钟。程序程序依然能够点亮LED。
硬件:正点原子linux开发板IM6ULL
开发环境:Ubuntu下的VSCode
功能:配置引脚GPIO1_IO03驱动LED的亮灭。
参考:IMX6ULL串口手册.pdf、I.MX6U 嵌入式 Linux 驱动开发指南 V1.3.pdfIMX6ULL点亮LED主要分一下四步:
第一步:编写汇编程序
/* 文件功能:使用汇编点灯 使用引脚:GPIO1_IO03 */ .global _start @全局标号 _start: @1.使能所有外设时钟 @使能CCGR1所有时钟 ldr r0, =0x020c4068 @CCM_CCGR0 地址 ldr r1, =0xffffffff @向CCM_CCGR0中写入的数据,也就是设置时钟参数 str r1, [r0] @将数据r1写入CCM_CCGR0所在地址内 ldr r0, =0x020c406c @CCM_CCGR1 地址 str r1, [r0] ldr r0, =0x020c4070 @CCM_CCGR2 地址 str r1, [r0] ldr r0, =0x020c4074 @CCM_CCGR3 地址 str r1, [r0] ldr r0, =0x020c4078 @CCM_CCGR4 地址 str r1, [r0] ldr r0, =0x020c407c @CCM_CCGR5 地址 str r1, [r0] ldr r0, =0x020c4080 @CCM_CCGR6 地址 str r1, [r0] @2.配置GPIO1_IO03模式 @设置引脚模式 操作寄存器 IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03 地址 0x020e0068 ldr r0, =0x020e0068 @IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03的地址 ldr r1, =0x00000005 @设置为ALT5模式 str r1, [r0] @写入配置设置为GPIO1_IO03 @3.配置GPIO1_IO3的电器属性 @配置引脚的电器属性 操作寄存器 IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO3 地址 0x020e02f4 ldr r0, =0x020e02f4 @IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03的地址 ldr r1, =0x000090b0 @配置电器属性寄存器为 str r1, [r0] /* bit16: YHS:作为输入有效,迟滞比较器 0 失能 bit14-15: PUS:设置上下拉与电阻大小 10 上拉电阻100K bit13: PUE:作为输入时使能或禁止上下拉 0 禁止 bit12: PKE:作为输出时使能或禁止下拉 1 使能 bit11: ODE:作用输出时使能开漏输出 0 关闭开漏输出 bit6-7: SPEED:IO作用输出时速度 10 100MHz bit3-5: DSE:输出时设置驱动能力 110 R0/6 bit0: SRE:设置压摆率 0 低压摆率 */ @4.设置GPIO1_IO03引脚方向---输入输出 @配置引脚方向为输出 操作寄存器GPIO1_GDIR 地址 0x0209c004 ldr r0, = 0x0209c004 ldr r1, [r0] @获取原始数据 orr r1, r1, #0x00000008 @将GPIO1_GDIR的bit3为设置为1 str r1, [r0] @写入配置将GPIO1_IO03设置为输出 @5.操作GPIO1_IO03引脚的控制寄存器 @操作引脚输出高低电平 操作寄存器GPIO1_DR 地址 0x0209c000 ldr r0, =0x0209c000 ldr r1, [r0] @获取GPIO1_DR寄存器数据 and r1, r1, #0xfffffff7 @将GPIO1_DR的bit3为设置为0 str r1, [r0] @写入配置将GPIO1_IO03设置为低电平 loop: b loop @此处为一个死循环,防止程序结束
第二步:编写makefile文件——编译链接文件
leb.bin:leds.s arm-linux-gnueabihf-gcc -g -c leds.s -o led.o arm-linux-gnueabihf-ld -Ttext 0x87800000 led.o -o led.elf arm-linux-gnueabilf-objcopy -O binary -S -g led.elf led.bin arm-linux-gnueabilf-objump -D led.elf > led.dis
arm-linux-gnueabihf-gcc -g -c leds.s -o led.o
arm-linux-gnueabihf-ld -Ttext 0x87800000 led.o -led.elf
arm-linux-gnueabilf-objcopy -O binary -S -g led.elf led.bin
arm-linux-gnueabilf-objump -D led.elf > led.dis
第三步:将程序烧录到SD卡
第四步:上电
此处疑问
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算