彙總點這
在前一篇的博文中,**有乙個地方敲錯了。
.text
.golbal _start
_start:
ldr r1, =0x56000050
ldr r0, =0x0100
str r0, [r1]
ldr r1, =0x56000054
ldr r0, =0x0010 ;此處應為ldr r0, =0
str r0, [r1]
halt:
b halt
ldr r1, =0x56000050
這種都是偽指令,意思是實際上,這句話包含了兩種指令。想仔細研究彙編,我們先把bin檔案反編譯一下,得到機器碼看一看。
首先在makefile檔案新增上這句指令碼
arm-linux-objdump -d nled1.elf > nled1.dis
執行後得到nled1.dis
nled1.elf: file format elf32-littlearm
disassembly of section .text:
00000000 <_start>:
0: e59f1014 ldr r1, [pc, #20] ; 1c 4: e3a00c01 mov r0, #256 ; 0x100
8: e5810000 str r0, [r1]
c: e59f100c ldr r1, [pc, #12] ; 20 10: e3a00000 mov r0, #0
14: e5810000 str r0, [r1]
00000018 :
18: eafffffe b 18 1c: 56000050 undefined instruction 0x56000050
20: 56000054 undefined instruction 0x56000054
disassembly of section .arm.attributes:
00000000 <.arm.attributes>:
0: 00001941 andeq r1, r0, r1, asr #18
4: 61656100 cmnvs r5, r0, lsl #2
8: 01006962 tsteq r0, r2, ror #18
c: 0000000f andeq r0, r0, pc
10: 00543405 subseq r3, r4, r5, lsl #8
14: 01080206 tsteq r8, r6, lsl #4
18: address 0x00000018 is out of bounds.
可以看到ldr r1, =0x56000050這一句指令分成了ldr r1, [pc, #20]
其中,pc是程式暫存器。
韋東山Linux嵌入式學習 硬體複習
彙總點這 之前一直都是用彙編來點燈,這次我們用最熟悉的c語言來點燈。思路很簡單,分別把gpfcon暫存器和gpfdat暫存器設定為輸出模式和輸出零就可以了。也就是 int mian 就算我們用c語言點燈,但是也要呼叫main函式,才可以執行這些語句呀,所以我們還要編寫乙個匯程式設計序來呼叫main函...
韋東山嵌入式linux學習筆記
第一課 原理圖之gpio和閘電路 generial peripheral input output 學習到的知識點 上拉電阻,和下拉電阻的認識和理解 以及梳理了一下閘電路。上拉電阻,下拉電阻一般都是和三極體配套使用,都是為了給懸空的的引腳 管中的一級 乙個確定的電壓狀態,並且起反相的作用。上拉電阻和...
如何學習嵌入式Linux 韋東山
版本 日期作者 說明v1 2020 韋東山適用於嵌入式linux初學者 我在100ask imx6ull售後群裡,發現很多初學者只有微控制器基礎,甚至沒有微控制器基礎。在學習linux時,對很多概念比較陌生,導致不知道學什麼,也不知道學了之後有什麼用。看原理圖,確定引腳是哪乙個,確定它輸出什麼電平才...