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下面
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/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燈亮了。
審核編輯 黃宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
led
+關注
關注
242文章
23277瀏覽量
660874 -
開發板
+關注
關注
25文章
5050瀏覽量
97471 -
匯編
+關注
關注
2文章
214瀏覽量
25934
發布評論請先 登錄
相關推薦
imx6ull裸機編程,使用宏定義無法驅動,使用指針就可以驅動
當我使用宏定義來訪問imx6ull的寄存器,控制GPIO5_IO3輸出高低電平控制LED時,程序燒錄進去后沒有反應。但是當我使用指針來訪問寄存器,LED可以正常驅動,請問這是什么原因?
發表于 11-04 17:59
使用TPS6521815 PMIC為NXP i.MX 6ULL、6UltraLite供電
電子發燒友網站提供《使用TPS6521815 PMIC為NXP i.MX 6ULL、6UltraLite供電.pdf》資料免費下載
發表于 09-13 09:44
?1次下載
低壓線性恒流LED恒流驅動芯片:用于洗墻燈和線條燈
洗墻燈和線條燈是兩種常見的LED照明產品,它們都需要使用LED恒流驅動芯片來確保穩定、可靠的電流供應,從而保證
飛凌嵌入式ElfBoard ELF 1板卡-在NXP源碼基礎上適配ELF 1開發板的按鍵功能
imx6ull_elf1_defconfigelf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ make menuconfig找到以下位置,Keyboards驅動默認已經編譯進內核
發表于 07-03 09:07
led燈是什么意思有什么用
、LED燈的原理 LED燈的原理是通過電流通過半導體材料時,電流與電子結合釋放出光能。這種光能是通過半導體材料內的能級差產生的。LED
LED驅動的工作原理是什么
LED驅動電路的主要功能是將交流電壓轉換為恒流電源,它確保了LED能以恒定電流工作,從而發揮最佳性能。本文將詳細闡述LED驅動的原理。
220v免驅動led驅動芯片:SM2082EDS適用于LED 球泡燈,筒燈
220V免驅動LED驅動芯片是一種電源管理芯片,它可以在接入220V交流電后,將電壓轉換為適合LED燈珠工作的直流電壓,從而點亮
嵌入式學習-ElfBoard ELF 1板卡-在nxp源碼基礎上適配ELF 1開發板的LED功能
源碼適配即在NXP i.MX6ULL EVK評估板對應的Linux內核源碼(linux-imx_4.1.15 版本)基礎上進行功能接口引腳適配,以適應ELF1開發平臺。本篇文章以適配LED為例給各位
發表于 01-05 14:35
評論