汇编驱动IMX6ULL LED灯

今天开始学习编写正点原子阿尔法开发板的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 @寄存器ccgr0ldr r1, = 0xffffffff str r1, [r0] @写入ccgr0寄存器ldr r0, =0x020c406c @寄存器ccgr1str r1, [r0]ldr r0, =0x020c4070 @寄存器ccgr2str r1, [r0]ldr r0, =0x020c4074 @寄存器ccgr3str r1, [r0]ldr r0, =0x020c4078 @寄存器ccgr4str r1, [r0]ldr r0, =0x020c407c @寄存器ccgr5str r1, [r0]ldr r0, =0x020c4080 @寄存器ccgr6str 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 00000x00 00 10 b0*/ldr r0, = 0x020e02f4 @ 寄存器sw_pad_gpio1_io03_baseldr r1, = 0x000010b0 @ 配置寄存器值str r1, [r0] @ 写入gpio的配置值/* 设置 gpio1——io03 为输出*/ldr r0, = 0x0209c004 @ 寄存器gpio1——gdirldr r1, = 0x00000008 str r1, [r0]/* 打开led0 */ldr r0, = 0x0209c000 @ 寄存器gpio1_drldr r1, = 0str r1, [r0]loop: b loop2、保存后,再编写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.disclean: rm -rf *.o led.bin led.elf led.dis3、然后把这两个文件拷贝到虚拟机新建好的linux-tool下面
4、拷入一个正点原子专用的烧写工具imxdownload,并且修改他的执行权限:chmod 777 imxdownload
5、插入一个sd,我这里用的是《雷龙发展提供的cs创世sd nand》
用ls /dev/sd*查看是否加载好:
因为我用的nflash卡,所以不象教程里面说的sdd卡,我这里是sdb。
6、执行烧写
lugl@lugl-virtual-machine:~/linux/tool$ ./imxdownload led.bin /dev/sdbi.mx6ull bin download softwareedit by:zuozhongkaidate:2019/6/10version:v1.1log:v1.0 initial version,just support 512mb ddr3 v1.1 and support 256mb ddr3file led.bin size = 144bytesboard ddr size: 512mbdelete old load.imxcreate new load.imxdownload load.imx to /dev/sdb ......记录了6+1 的读入记录了6+1 的写出3216字节(3.2 kb,3.1 kib)已复制,0.0111069 s,290 kb/s显示烧写成功。
7、把卡插到开发板上,上电,稍等一会,就看到开发板的ds0灯亮了。


LED舞台应用的创新空间在哪?
英伟达机器人实验室专注于厨房辅助机器人等10多个项目
唤醒事件(也称唤醒源)有效性验证为什么要设置一段时间?
AMD RX 6900 XT官方成绩已经超越了RTX 3090
移动装置测量需求再进化 基础仪器换机潮涌现
汇编驱动IMX6ULL LED灯
Silicon Labs MCU大佬在做原始设计时选了哪些晶体?
所有电子系统都存在的EMI问题
MDN简介以及MDN在视频点播系统中的作用
声控LED频谱分析仪的制作
波音737 MAX 10系列飞机目前已经获得了超过550架订单
盈方微拟购买华信科及World Style 49%股权
德国考虑禁用华为部分设备?
网络摄像机的照明度
通信教程01 什么是并行通信?什么是串行通信?
利用LDC2114与电感式触摸技术设计智能手表按键
磁翻板液位计选型需要考虑的七大因素
三星和苹果创新不足,mate20有利于进一步冲击高端市场
高科技的应用让健身房变得更智能更便捷
云塔电子科技成功研制出全球首对5G与WiFi共存滤波器模组