0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

汇编驱动IMX6ULL LED灯

华仔的编程随笔 来源:华仔的编程随笔 作者:华仔的编程随笔 2023-05-01 09:19 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

今天开始学习编写正点原子阿尔法开发板的LED汇编

1、打开vscode新建led.s

代码如下:

/**************************************************************
Copyright © lugl.
文件名 : led.s
作者 : 刘建华
版本 : V1.0
描述 : 裸机实验 1 汇编点灯
 使用汇编来点亮开发板上的 LED 灯,学习和掌握如何用汇编语言来
 完成对 I.MX6U 处理器的 GPIO 初始化和控制。
其他 : 无
日志 : 初版 V1.0 2023.5.1 学习左中凯老师例程
**************************************************************/
.global _start  /* 全局标号 */

/* 
*描述: _start函数,程序从此函数开始,执行此函数完成时钟使能、
*      GPIO初始化、最终控制GPIO输出低电平来点亮LED灯
*/
_start:
ldr r0, = 0x020c4068   @寄存器CCGR0
ldr r1, = 0xFFFFFFFF  
str r1, [r0]           @写入CCGR0寄存器

ldr r0, =0x020C406C    @寄存器CCGR1
str r1, [r0]

ldr r0, =0x020C4070   @寄存器CCGR2
str r1, [r0]

ldr r0, =0x020C4074   @寄存器CCGR3
str r1, [r0]

ldr r0, =0x020C4078   @寄存器CCGR4
str r1, [r0]

ldr r0, =0x020C407C  @寄存器CCGR5
str r1, [r0]

ldr r0, =0x020C4080  @寄存器CCGR6
str r1, [r0]

/*  初始化时钟结束 */

/* 开始设置GPIO1_IO03的IO属性
*bit 16:  0 HYS关闭
*bit [15:14]: 00 默认下拉
*bit [13]: 0 kepper 功能
*bit [12]: 1 pull/kepper 使能
*bit [11]: 0 关闭开路输出
*bit [7:6]: 10 速度100 MHz
*bit [5:3]: 110 R0/6驱动能力
*bit [0]  : 0 低转换率
0b0 0001 0000 1011 0000
0x00 00 10 B0
*/

ldr r0, = 0x020e02f4  @ 寄存器SW_PAD_GPIO1_IO03_BASE
ldr r1, = 0x000010b0  @ 配置寄存器值
str r1, [r0]          @ 写入GPIO的配置值

/* 设置 GPIO1——IO03 为输出*/
ldr r0, = 0x0209c004  @ 寄存器GPIO1——GDIR
ldr r1, = 0x00000008 
str r1, [r0]

/* 打开LED0 */
ldr r0, = 0x0209c000 @ 寄存器GPIO1_DR
ldr r1, = 0
str r1, [r0]

loop:
    b loop

2、保存后,再编写makfile

led.bin:led.s
	arm-linux-gnueabihf-gcc -g -c led.s -o led.o
	arm-linux-gnueabihf-ld -Ttext 0X87800000 led.o -o led.elf
	arm-linux-gnueabihf-objcopy -O binary -S -g led.elf led.bin
	arm-linux-gnueabihf-objdump -D led.elf > led.dis
clean:
	rm -rf *.o led.bin led.elf led.dis

3、然后把这两个文件拷贝到虚拟机新建好的linux-tool下面

image.png

4、拷入一个正点原子专用的烧写工具imxdownload,并且修改他的执行权限:chmod 777 imxdownload

5、插入一个SD,我这里用的是《雷龙发展提供的CS创世SD NAND》

e933aa242325438b4029f849b7eeac9.jpg

fc6c9845ca7898f75ed16246d54c95c.jpg

用ls /dev/sd*查看是否加载好:

image.png

因为我用的Nflash卡,所以不象教程里面说的SDD卡,我这里是sdb。

327ac5c95e2512627b64fc8394bce30.jpg

6、执行烧写

lugl@lugl-virtual-machine:~/linux/tool$ ./imxdownload led.bin /dev/sdb
I.MX6ULL bin download software
Edit by:zuozhongkai
Date:2019/6/10
Version:V1.1
log:V1.0 initial version,just support 512MB DDR3
    V1.1 and support 256MB DDR3
file led.bin size = 144Bytes
Board DDR SIZE: 512MB
Delete Old load.imx
Create New load.imx
Download load.imx to /dev/sdb  ......
记录了6+1 的读入
记录了6+1 的写出
3216字节(3.2 kB,3.1 KiB)已复制,0.0111069 s,290 kB/s

显示烧写成功。

7、把卡插到开发板上,上电,稍等一会,就看到开发板的DS0灯亮了。

97de0d9cf206803300e53a446b4af2b.jpg

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    243

    文章

    24434

    浏览量

    687377
  • 开发板
    +关注

    关注

    25

    文章

    6122

    浏览量

    113265
  • 汇编
    +关注

    关注

    2

    文章

    214

    浏览量

    27154
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何移植rt-thread到野火imx6ull开发板上?

    求助如何将rt-thread移植到野火imx6ull(coretex-A7)开发板上,官方的bsp中没有imx6ull
    发表于 09-29 06:25

    请问有没有用uboot引导启动过rtthread-smart的?

    通过uboot引导,在imx6ull开发板上启动rtthread-smart,通过thtp从网口下载到内存后,用go命令无法启动,且没有额外的打印消息,有没有遇到同样问题的?这个该怎么解决
    发表于 09-28 10:50

    ‌LM3431 3通道恒流LED驱动器技术文档总结

    LED 串提供高精度恒流。输出电流可调,以驱动超过 200 mA 的组串。LM3431 可以扩展以驱动多达 6
    的头像 发表于 09-05 10:59 783次阅读
    ‌LM3431 3通道恒流<b class='flag-5'>LED</b><b class='flag-5'>驱动</b>器技术文档总结

    2.4 A 双通道闪光 LED 驱动器 skyworksinc

    电子发烧友网为你提供()2.4 A 双通道闪光 LED 驱动器相关产品参数、数据手册,更有2.4 A 双通道闪光 LED
    发表于 07-30 18:30
    2.4 A 双通道闪光<b class='flag-5'>灯</b> <b class='flag-5'>LED</b> <b class='flag-5'>驱动</b>器 skyworksinc

    2.4 A / 2 A 双路独立闪光 LED 驱动器,带 TrueFlash™ skyworksinc

    电子发烧友网为你提供()2.4 A / 2 A 双路独立闪光 LED 驱动器,带 TrueFlash™相关产品参数、数据手册,更有2.4 A / 2 A 双路独立闪光
    发表于 07-30 18:30
    2.4 A / 2 A 双路独立闪光<b class='flag-5'>灯</b> <b class='flag-5'>LED</b> <b class='flag-5'>驱动</b>器,带 TrueFlash™ skyworksinc

    用于高强度 LED 相机闪光的 2A 驱动器 IC skyworksinc

    电子发烧友网为你提供()用于高强度 LED 相机闪光的 2A 驱动器 IC相关产品参数、数据手册,更有用于高强度 LED 相机闪光的 2
    发表于 07-28 18:33
    用于高强度 <b class='flag-5'>LED</b> 相机闪光<b class='flag-5'>灯</b>的 2A <b class='flag-5'>驱动</b>器 IC skyworksinc

    大电流 LED 闪光驱动器电荷泵 IC skyworksinc

    电子发烧友网为你提供()大电流 LED 闪光驱动器电荷泵 IC相关产品参数、数据手册,更有大电流 LED 闪光
    发表于 07-28 18:30
    大电流 <b class='flag-5'>LED</b> 闪光<b class='flag-5'>灯</b><b class='flag-5'>驱动</b>器电荷泵 IC skyworksinc

    500mA LED 闪光驱动器 IC skyworksinc

    电子发烧友网为你提供()500mA LED 闪光驱动器 IC相关产品参数、数据手册,更有500mA LED 闪光
    发表于 07-23 18:31
    500mA <b class='flag-5'>LED</b> 闪光<b class='flag-5'>灯</b><b class='flag-5'>驱动</b>器 IC skyworksinc

    Analog Devices Inc. MAX25169 6通道LED背光驱动器数据手册

    -驱动器电源、一个反相降压-升压转换器和一个升压/SEPIC控制器,可为显示屏背光的1-6LED串供电。
    的头像 发表于 06-19 10:51 650次阅读
    Analog Devices Inc. MAX25169 <b class='flag-5'>6</b>通道<b class='flag-5'>LED</b>背光<b class='flag-5'>驱动</b>器数据手册

    iMX6ULL上设置MAC地址,启动后无法获得相同的mac id?

    我正在开发基于 imx6ull 的定制板。在 U Boot with Fuse Prog Command 中,我编写了 mac id,但是在启动后我无法获得相同的 mac id。还需要任何其他程序
    发表于 04-10 06:02

    如何在i.MX6ULL睡眠时停止刷新LCD?

    为了更好的 EMC,我们需要在 i.MX6ULL 进入睡眠状态时停止 LCD 刷新。 能否实现 ? 平台: i.MX6ULL 系统: Linux
    发表于 04-03 07:14

    如何维护i.MX6ULL的安全内核?

    为 5.15.158。 因此,我们想知道:是否有可能基于这个 BSP 平台实现安全的 i.MX 6ULL 系统?您会推荐上游的 linux-fslc 还是 linux-imx (BSP) 内核树?显然,linux-fslc 和上游内核在安全性方面具有优势,但缺少什么呢?
    发表于 04-01 08:28

    嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-开发板适配之LED

    imx6ull_elf1_defconfig然后在源码根目录下使用make menuconfig命令,搜索LEDS_GPIO,看到LEDS_GPIO [=y]说明此驱动已经编译进内核:elf@ubuntu:~/work
    发表于 01-24 09:40

    飞凌嵌入式ElfBoard ELF 1板卡-开发板适配之LED

    imx6ull_elf1_defconfig然后在源码根目录下使用make menuconfig命令,搜索LEDS_GPIO,看到LEDS_GPIO [=y]说明此驱动已经编译进内核:elf@ubuntu:~/work
    发表于 01-23 10:49

    imx6ull 和 lan8742 工作起来不正常, ping 老是丢包

    采用 imx6ull 默认的设备树, 和 lan8742通信, MAC的配置如下: pinctrl_enet2: enet2grp { fsl,pins = <
    发表于 01-09 14:51