今天開始學(xué)習(xí)編寫正點原子阿爾法開發(fā)板的LED匯編。
1、打開vscode新建led.s
代碼如下:
/**************************************************************
Copyright ? lugl.
文件名 : led.s
作者 : 劉建華
版本 : V1.0
描述 : 裸機實驗 1 匯編點燈
使用匯編來點亮開發(fā)板上的 LED 燈,學(xué)習(xí)和掌握如何用匯編語言來
完成對 I.MX6U 處理器的 GPIO 初始化和控制。
其他 : 無
日志 : 初版 V1.0 2023.5.1 學(xué)習(xí)左中凱老師例程
**************************************************************/
.global _start /* 全局標號 */
/*
*描述: _start函數(shù),程序從此函數(shù)開始,執(zhí)行此函數(shù)完成時鐘使能、
* 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]
/* 初始化時鐘結(jié)束 */
/* 開始設(shè)置GPIO1_IO03的IO屬性
*bit 16: 0 HYS關(guān)閉
*bit [15:14]: 00 默認下拉
*bit [13]: 0 kepper 功能
*bit [12]: 1 pull/kepper 使能
*bit [11]: 0 關(guān)閉開路輸出
*bit [7:6]: 10 速度100 MHz
*bit [5:3]: 110 R0/6驅(qū)動能力
*bit [0] : 0 低轉(zhuǎn)換率
0b0 0001 0000 1011 0000
0x00 00 10 B0
*/
ldr r0, = 0x020e02f4 @ 寄存器SW_PAD_GPIO1_IO03_BASE
ldr r1, = 0x000010b0 @ 配置寄存器值
str r1, [r0] @ 寫入GPIO的配置值
/* 設(shè)置 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下面
4、拷入一個正點原子專用的燒寫工具imxdownload,并且修改他的執(zhí)行權(quán)限:chmod 777 imxdownload
5、插入一個SD,我這里用的是《雷龍發(fā)展提供的CS創(chuàng)世SD NAND》
用ls /dev/sd*查看是否加載好:
因為我用的Nflash卡,所以不象教程里面說的SDD卡,我這里是sdb。
6、執(zhí)行燒寫
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字節(jié)(3.2 kB,3.1 KiB)已復(fù)制,0.0111069 s,290 kB/s
顯示燒寫成功。
7、把卡插到開發(fā)板上,上電,稍等一會,就看到開發(fā)板的DS0燈亮了。
審核編輯 黃宇
-
led
+關(guān)注
關(guān)注
242文章
23614瀏覽量
669078 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5389瀏覽量
100889 -
匯編
+關(guān)注
關(guān)注
2文章
214瀏覽量
26342
發(fā)布評論請先 登錄
相關(guān)推薦
在iMX6ULL上設(shè)置MAC地址,啟動后無法獲得相同的mac id?
如何在i.MX6ULL睡眠時停止刷新LCD?
如何維護i.MX6ULL的安全內(nèi)核?
嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-開發(fā)板適配之LED
飛凌嵌入式ElfBoard ELF 1板卡-開發(fā)板適配之LED
imx6ull 和 lan8742 工作起來不正常, ping 老是丟包
imx6ull裸機編程,使用宏定義無法驅(qū)動,使用指針就可以驅(qū)動
使用TPS6521815 PMIC為NXP i.MX 6ULL、6UltraLite供電

評論