韋東山Linux嵌入式學習 硬體複習

2021-09-29 09:43:44 字數 1495 閱讀 6404

彙總點這

在前一篇的博文中,**有乙個地方敲錯了。

.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時,對很多概念比較陌生,導致不知道學什麼,也不知道學了之後有什麼用。看原理圖,確定引腳是哪乙個,確定它輸出什麼電平才...