娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年03月28日(星期五)

正在發生

2020年03月28日 | linux系統學習1-8:第1個ARM裸板程序及引申

發布者:beup001 來源: eefocus關鍵字:linux系統  ARM  裸板程序  引申 手機看文章 掃描二維碼
隨時隨地手機看文章

第001節:輔線1_硬件知識_LED原理圖

實現點亮LED的步驟: 

1.看原理圖,確定控制led的引腳 

通過主芯片使用引腳輸出:3.3V點亮led;0V熄滅led。 

-接法: 

這里寫圖片描述

引腳驅動能力不足:使用三極管

接法介紹: 

-接法1: 

這里寫圖片描述

-接法2: 

這里寫圖片描述

2.看主芯片手冊,確定如何設置/控制引腳

3.寫程序


第002節:輔線1_硬件知識_s3c2440啟動流程與GPIO操作

知識點:


網絡net,同名的net表示連接在一起

網絡中的n,常表示低電平有效

怎么讓GPF4輸出1/0 

先配置為輸出引腳

設置狀態 

這里寫圖片描述

設置GPFCON[9:8]=0b01(0b表示二進制,9為0,8為1),GPF4配置為輸出

設置GPFDAT[4]=1:輸出高電平,led熄滅

設置GPFDAT[4]=0:輸出低電平,led點亮

S3C2440框架與啟動過程:


S3C2440框架圖: 

這里寫圖片描述

啟動過程:大多數ARM芯片從0地址啟動

Nor啟動時候,Nor Flash基地址為0;片內RAM地址為0x4000,0000 

cpu讀出Nor上第一個指令(前4字節),執行,

cpu繼續讀出其他指令執行。

Nand啟動,片內4kRAM基地址為0; Nor Flash不可以訪問 

2440硬件把Nand前4k內容復制到片內RAM,

然后cpu從0地址取出第一條指令執行。


第003節:編寫第一個程序點亮LED

怎么讓GPF4輸出1/0的方法:


先配置為輸出引腳

設置狀態 

 這里寫圖片描述 

設置GPFCON[9:8]=0b01(0b表示二進制:9為0,8為1),GPF4配為輸出 

-==>把0x100寫入GPFCON,即寫到地址0x5600,0050上

設置GPFDAT[4]=1:輸出高電平,led熄滅 

-==>把0x10寫到地址0x5600,0054上

設置GPFDAT[4]=0:輸出低電平,led點亮 

-==>把0寫到地址0x5600,0054上 

補充知識: 

這里寫圖片描述

幾條匯編代碼:


LDR(load):讀內存命令, 

LDR RO,[R1]:假設R1的值為x,則讀取地址x上的數據(4字節),保存到R0中

STR(store):寫內存命令 

STR R0,R[1]:假設R1的值為x,把R0的值寫入地址x(4字節)

B:跳轉

MOV(move): 

MOV R0, R1:把R1的值賦給R0,即R0=R1

MOV R0,#0x100:即把R0=0x100

LDR R0, =0X12345678:偽指令,它會被拆分為幾條真正的RAM指令

引入偽指令, “LDR R0,=任意值”的原因: 

-ARM指令一共32位,會有部分字節表示指令,某些存儲R0,其余剩余的不足32位,不能表示任意值,只能表示簡單值(被稱為立即數)。

安裝arm-linux-gcc注意事項以及相關重點:


安裝32位庫

如何判斷ubuntu的版本

第004節:匯編與機器碼

CPU寄存器及其別名:

image.png

詳細介紹: 

program counter:程序計數器=當前指令+8 

流水線:當前執行地址A的指令,已經在對地址A+4的指令進行譯碼,已經在讀取地址A+8(即PC的值)的指令

反匯編指令理解:

0: e59f1014 ldr r1, [pc, #20] ; 1c  

r1=[pc+20]=[8+20]=[0x1c]=0x56000050

8: e5810000 str r0, [r1] 

把r0即0x100,寫入r1對應的內存,0x100–>[0x56000050]:即GPFCON寄存器

c: e59f100c ldr r1, [pc, #12] ; 20  

r1=[pc+12]=[0xc+8+12]=[32]=[0x20]=0x56000054:即GPFDAT寄存器

GPFCON/GPFDAT在CPU中,都是作為內存

完整代碼:

led_on.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.


練習題: 

修改len_on.s到點亮LED2

直接修改led_on.bin點亮LED2

mov指令機器碼:

4: e3a00c01 mov r0, #256 ; 0x100 

這里寫圖片描述 
這里寫圖片描述

故:當代碼為mov r0,#0x400,即修改最后的12位立即數(=immed_8循環右移(2*rotate)位) 

12位立即數中高4位,表示rotate,低8位:immed_8

具體介紹: 

這里寫圖片描述

舉一反三: 

這里寫圖片描述

第005、006節:編程知識_進制-字節序

進制:


如何快四轉化2/8/16進制:

8421 

這里寫圖片描述

0b開頭:2進制

0開頭:8進制

0x開頭:16進制

字節序:


低位存放低地址:小字節序(little endian)

高位存在低地址:大字節序(big endian)

位操作:


移位: 

左移:int a=0x123; int b=a<<2=? 

-通過8421來轉化為二進制,即a=0001,0010,0011,故b=0100,1000,1100=8421=0x48C=0x123*(2^2)=0x123*4

右移:int a=0x123; int b=a>>2=? 

-故a=0001,0010,0011; 則b=00,0100,1000=0x48=0x123/4=0x48

取反: 原來為0的位變為1;原來為1的位變為0 

int a=0x123; int b=~a=0xfffffedc???

位與: c=a&b 

1 and 1 = 1;

1 and 0 = 0;

0 and 1 = 0;

o and 0 = 0;

位或:c=a|b 

1 or 1 = 1;

1 or 0 = 1;

0 or 1 = 1;

o or 0 = 0;

置位: 

int a=0x123,把bit7,8置位

int b=a|(1<<7)|(1<<8) 

這里寫圖片描述

清位:


int a=0x123,把bit7,8清除

int b=a&(~(1<<7))&(~(1<<8)) 

這里寫圖片描述

第007節:編寫C程序控制LED

C指針操作:

1.所有的變量在內存中都有一塊區域 

這里寫圖片描述

可以通過變量/指針來操作內存


第008節:

幾條匯編代碼:


LDR(load):讀內存命令, 

LDR RO,[R1]:假設R1的值為x,則讀取地址x上的數據(4字節),保存到R0中

STR(store):寫內存命令 

STR R0,R[1]:假設R1的值為x,把R0的值寫入地址x(4字節)

B:跳轉

MOV(move): 

MOV R0, R1:把R1的值賦給R0,即R0=R1

MOV R0,#0x100:即把R0=0x100

LDR R0, =0X12345678:偽指令,它會被拆分為幾條真正的RAM指令

引入偽指令, “LDR R0,=任意值”的原因: 

-ARM指令一共32位,會有部分字節表示指令,某些存儲R0,其余剩余的不足32位,不能表示任意值,只能表示簡單值(被稱為立即數)。

add: 

add r0,r1, #4==>r0=r1+4

sub: 

sub r0, r1,#4==>r0=r1-4

sub r0, r1,r2==>r0=r1-r2

BL(branch and link):


bl * * *: 

-跳轉到* * *; 

-并將返回地址(下一條指令的地址)保存在lr寄存器中

ldm(many):讀內存,寫入多個寄存器


ldmia:

stm: 把多個寄存器的值寫入內存 

stmdb:

過后增加(Increment After)、預先增加(Increment Before)、過后減少(Decrement After)、預先減少(Decrement Before)。

舉例: 

這里寫圖片描述
這里寫圖片描述

第009節:解析C程序的內部機制


關鍵字:linux系統  ARM  裸板程序  引申 引用地址:linux系統學習1-8:第1個ARM裸板程序及引申

上一篇:交叉編譯工具的使用說明
下一篇:第008課_第1個ARM落版程序及引申

推薦閱讀

一觸即發的中美貿易大戰,在今天似乎出現了一線轉機,包括CNBC、《華爾街日報》等美國媒體都報道,特朗普政府放出消息希望中國增加采購美國產的汽車與半導體產品,借此減少中美之間的貿易逆差金額。雖然此一消息并未獲得任何一方的證實回應,但美股周一收盤全面大漲,其中道瓊指數大漲669點,漲幅2.84%,而以科技股為主的納斯達克指數漲幅則是更勝一籌,終...
據外媒消息,三星將為其新品2019 QLED電視增加一個新的壁紙功能:當電視屏幕關閉后,三星2019 QLED電視將支持用戶將電視屏幕變為“藝術品”或“繪畫”。  屆時,三星將提供一系列藝術家的作品,包括抽象油畫及其他藝術作品等,該功能的加入將擴大電視的功能,當用戶不使用電視時,電視將變身為一幅漂亮的藝術繪畫,提升客廳藝術氛圍,打造更美家居環境...
目標:直流電機的控制1.直流電機簡介直流電機是指能將直流電能轉換成機械能的旋轉電機。相關參數:軸長:8mm軸徑:2mm電壓:1-6v參考電流:0.35-0.4A3v轉速:17000-18000轉每分鐘直流電機2.模塊電路直流電機模塊TC1117芯片構造與TC1508一樣,那就來看看TC1508的引腳INA, INB與INC,IND是兩組輸入端OUTA,OUTB與OUTC,OUTD是兩組輸出端真值表INA和INB都輸...
作為YouTube上百萬粉絲的博主,波士頓動力每次發布新的機器人視頻都能獲得數百萬的點擊量并引發廣泛傳播。2019年,波士頓動力宣布Spot將四足機器人開始商業化,并計劃出貨1000只。 實際上,在2019年已經有一些企業收到了Spot并展開應用,它們在人類的操控下完成建筑工地巡檢、巡航追蹤工程進度等工作。Spot也在11月迎來了第一個商業買家——德國公司Hol...

史海拾趣

問答坊 | AI 解惑

城市公共交通調度監控系統研究

 建立完善的城市公共交通調度監控系統是緩解城市交通擁堵必不可少的手段之一。提出了公共交通調度監控系統的組成結構、開發途徑和方式,以及開發步驟。…

查看全部問答∨

avr單片機讀書筆記

好東西,不想獨自放到電腦里面,與大家共享. 單片機學習及提升的絕佳資料,可以讓你直接成為單片機高手,為arm學習打下堅實的基礎. …

查看全部問答∨

嵌入式硬盤錄像機錄像的磁盤,linux下無法掛載

Linux系統下新增一塊500G磁盤,這個磁盤是用于嵌入式硬盤錄像機錄像的磁盤,我需要把里面的內容COPY出來,但是無法掛載這塊磁盤。用fdisk -l出現如下提示: Disk /dev/sda: 500.1G,500107862016 bytes 255 heads,63 sectors/track,60801 cylind ...…

查看全部問答∨

100分請您提供WinCEPB50-061231-Product-Update-Rollup-Armv4I.msi,GOOGLE至凌晨沒找著

如題,多謝。 我已經打了了: WinCEPB50-081231-Product-Update-Rollup-Armv4I.msi WinCEPB50-090131-2009M01-Armv4I.msi WinCEPB50-090228-2009M02-Armv4I.msi 結果編譯時,發現WINCE500\\PUBLIC\\COMMON\\OAK\\DRIVERS\\SDCARD\\SDBUSDRIVER ...…

查看全部問答∨

關于WINCE50下中斷號

請問各位:    1、WINCE50下是不是分物理中斷號和邏輯中斷號??物理中斷號就是定義的跟硬件開關中斷相關的中斷號,邏輯中斷號是物理中斷號對應的由系統調用的中斷號???這個理解對不對???    2、BSP中SD驅動的注冊表信 ...…

查看全部問答∨

/dev 下沒有U盤的設備文件

有HOTPLUG udev /DEV 下沒有U盤設備文件 fdisk -l 也沒有!…

查看全部問答∨

目標板tftp怎么開啟? (

主機弄好了TFTP-SERVER,目標板默認啟動無TFTP服務,查了下幫助是用TFTPBOOT開啟 MINICOM登入后,輸入TFTPBOOT后,目標板IP是192。168。1。134 SERVER地址是192。168。1。106 但是連接不上總是TRY AGAIN,我把主機地址改為192。168。1。106也連 ...…

查看全部問答∨

sql ce2.0用rda連接sql server,出現問題,在線等

請教一個問題,我用rda連接sql server ,但出現以下錯誤: 未處理的“System.Data.SqlServerCe.SqlCeException”類型的異常出現在 System.Data.SqlServerCe.dll 中。 我是C# 2003、sql server 2000、Pda是win mobile 5.0 我的代碼如下: string ...…

查看全部問答∨

異步、同步通信?

什麼叫異步、同步通信,他們的區別是什麼?…

查看全部問答∨

找兼職Win CE程序員

要求Win CE 下的C++開發經驗,熟悉Mysql開發,有一定的英文水平。 請聯系劉先生:superbanma@hotmail.com…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 农安县| 日土县| 普定县| 西林县| 会宁县| 宜良县| 饶阳县| 合江县| 岳阳县| 徐汇区| 志丹县| 安义县| 抚州市| 子长县| 延吉市| 青州市| 台北县| 张北县| 安顺市| 阜南县| 湖南省| 和田市| 礼泉县| 沙坪坝区| 虎林市| 永和县| 唐海县| 盘山县| 高平市| 福安市| 无极县| 得荣县| 康平县| 内黄县| 新巴尔虎右旗| 图们市| 曲靖市| 通化市| 桐梓县| 开化县| 河东区|