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
    +关注

    关注

    237

    文章

    22449

    浏览量

    645851
  • 开发板
    +关注

    关注

    25

    文章

    4429

    浏览量

    93970
  • 汇编
    +关注

    关注

    2

    文章

    214

    浏览量

    25734
收藏 人收藏

    评论

    相关推荐

    如何实现Linux下的LED驱动

    LED驱动 我们以imx6ull pro开发板的板载led为例,其板载了一个可控制的Led2,原理图如下:
    的头像 发表于 09-27 11:03 314次阅读
    如何实现Linux下的<b class='flag-5'>LED</b><b class='flag-5'>驱动</b>

    如何将u-boot.2022.10版本移植到imx6ull开发板

    今天给大家讲一讲如何将u-boot.2022.10版本移植到imx6ull开发板上。
    发表于 07-12 14:57 729次阅读
    如何将u-boot.2022.10版本移植到<b class='flag-5'>imx6ull</b>开发板

    已知的HAB漏洞是否会影响i.MX6ULL版本1.1?

    我有一个 NXP iMX6ULL rev 1.1,发现i.MX6ULL 的 HAB 机制中存在两个已知漏洞。但是,我所指的文档并未指定芯片版本。因此,我不确定这些漏洞是否会影响我的设备。你能帮我澄清一下吗?
    发表于 06-02 09:07

    IMX6ULL LCD一旦SD卡插入或在板上播放mp3,液晶显示器显示毫秒闪烁是怎么回事?

    环境:NXP IMX6ULL + LVGL 7.11.0 问题:一旦SD卡插入或在板上播放mp3,液晶显示器显示毫秒闪烁,我认为系统中断触发了这个问题。 我应该如何避免这种情况,有没有人对此有经验或建议?
    发表于 06-02 08:11

    无法在IMX6ULL中进入恢复模式怎么解决?

    我正在尝试在 iMX6ULL 处理器中进入恢复模式(使用 Colibri 评估板)。我正在按照官方文档的步骤操作,但仍然无法进入恢复模式。 当我(我假设)进入恢复模式后查看 USB 设备列表
    发表于 06-01 07:26

    imx6ull工业级在80度高温测试会掉电,请问下是否正常?

    imx6ull MCIMX6Y2CVM05AB 工业级在80度高温测试会 power down, 芯片规格书写了Temperature Tj -40 to 105
    发表于 05-31 11:03

    在defconfig中添加CONFIG_SOC_IMX6ULL=y标志,但它没有被设置是怎么回事?

    大家好, 我目前正在开发一个使用 Imx6ull 芯片的定制板,我们使用我们自己的发行版为我们的组织专有的发行版创建了定制机器配置。 我们刷新了构建,当我们尝试启动内核时崩溃了
    发表于 05-19 07:58

    IMX6ULL EVK以太网问题如何解决?

    几个月以来我有 2 个 IMX6ULL EVK。 我使用以下命令创建我的 bsp: mkdir ~/bin curl~/bin/repo chmod a+x ~/bin/repo export
    发表于 05-18 15:04

    imx6ull处理器如何启用节流?

    我们正在使用 imx6ull 处理器,我们想在内核(热驱动程序)中启用节流。请您指导我们如何启用节流。
    发表于 05-17 06:51

    如何使用imx6ull实现裸机开发I2C读取MPU6050,并使用DMA方式传输数据?

    我最近想使用imx6ull实现裸机开发I2C读取MPU6050,并使用DMA方式传输数据。我在官方的I2C寄存器手册里并没有看到关于DMA使能相关的寄存器,但是我在内核中发现了一些与i2c dma
    发表于 05-17 06:04

    i.MX6ULL上电序列是怎样的?

    请告诉我们 iMX6ULL 的上电顺序中的以下几点。 1. IMX6ULLIEC.pdf (DataSheet) 没有以下电源的序列描述。你介意认为如果在VDD_SNVS_IN之后就没有序列顺序
    发表于 05-09 10:09

    IMX6ULL的EMMC引导问题如何解决?

    我在使用我们的定制 IMX6ULL 板时遇到了一个问题,无法从 EMMC 启动。尽管 EMMC 似乎已正确编程,但它根本无法启动。但是,从 SD 卡编程和启动没有问题。在进行 X 射线检查后,焊接
    发表于 05-05 07:16

    I.MX6ULL官方SDK驱动LED

    本章学习如何使用NXP官方的imx6ull的SDK。
    的头像 发表于 05-03 20:53 44.8w次阅读
    I.MX6<b class='flag-5'>ULL</b>官方SDK<b class='flag-5'>驱动</b><b class='flag-5'>LED</b>灯

    IMX6ULL正点原子开发板LED驱动

    用C语言裸机编程驱动正点原子I.MAX6ULL开发板上的LED
    的头像 发表于 05-02 15:22 25.9w次阅读
    <b class='flag-5'>IMX6ULL</b>正点原子开发板<b class='flag-5'>LED</b><b class='flag-5'>驱动</b>

    关于使用imx6ull平台的PXP模块拼接两张图片输出到LCD的疑问求解

    使用的是imx6ull平台的PXP模块拼接两张图片输出到LCD。其中一张是QT界面(菜单),QT设置的是不透明但是是下层的图片会导入致使菜如Qt。 。 设计需求: 设计需要, 1,使用CSI传输显示
    发表于 04-27 07:19