I.MX6ULL的LED彙編程式
阿新 • • 發佈:2020-12-30
原始碼源自原子哥
1.如下位led.s彙編原始碼
1 .global _start @全域性標號 2 3 _start: 4 /* 使能所有外設時鐘*/ 5 ldr r0, =0x020c4068 @CCGR0 6 ldr r1, =0xffffffff @要向CCGR0寫入的資料 7 str r1, [r0] @將0xffffffff寫入到CCGR0中 8 9 ldr r0, =0x020c406c @CCGR1 10 str r1, [r0] 11 12 ldr r0, =0x020c4070 @CCGR2 13 str r1, [r0]14 15 ldr r0, =0x020c4074 @CCGR3 16 str r1, [r0] 17 18 ldr r0, =0x020c4078 @CCGR4 19 str r1, [r0] 20 21 ldr r0, =0x020c407c @CCGR5 22 str r1, [r0] 23 24 ldr r0, =0x020c4080 @CCGR6 25 str r1, [r0] 26 /*配置GPIO1_IO03 PIN的複用為GPIO, 27 *設定IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03=5 28 *IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03地址為0X020E006829 */ 30 ldr r0, =0x020e0068 @IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03 31 ldr r1, =0x00000005 @要寫入的資料 32 str r1, [r0] @將0x5寫入到IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03中 33 34 35 /*配置GPIO1_IO03的電氣屬性,也就是暫存器: 36 *IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03 37 *這個暫存器地址為0X020E02F4 38 *bit0 0 低速率 39 *bit5:3 110 R0/6驅動能力 40 *bit7:6 10 100MHz速度41 *bit11 0 關閉開漏輸出 42 *bit12 1 使能pull/keeper 43 *bit13 0 keeper 44 *bit15:14 00 100K下拉 45 *bit16 0 關閉hys 46 */ 47 ldr r0, =0x020e02f4 48 ldr r1, =0x10b0 49 str r1, [r0] 50 /*設定GPIO 51 *設定GPIO1_GDIR暫存器,設定GPIO1_GPIO03為輸出 52 *GPIO1_GDIR暫存器的地址為0x0209c004,設定GPIO1_GDIR暫存器bit3為1 53 *也就是設定GPIO1_IO03為輸出 54 */ 55 ldr r0, =0x0209c004 56 ldr r1, =0x8 57 str r1, [r0] 58 /*開啟LED,也就是設定GPIO_IO03為0 59 *GPIO1_DR暫存器地址為0x0209c000 60 */ 61 ldr r0, =0x0209c000 62 ldr r1, =0 63 str r1, [r0] 64 65 loop: 66 b loop
2.生成.o編譯檔案
終端使用 arm-linux-gnueabihf-gcc -g -c leds.s -o led.o 命令生成.o檔案。
3.生成.elf連結檔案
終端使用 arm-linux-gnueabihf-ld -Ttext 0x87800000 led.o -o led.elf 生成.elf檔案。
4.生成.bin檔案
終端使用 arm-linux-gnueabihf-objcopy -O binary -g -S led.elf led.bin 生成.bin檔案。