一步步點亮LED3_從零開始手寫彙編點亮LED
《朱老師物聯網大講堂》學習筆記
結合上節內容可知
GPJ0埠一共有8個引腳,分別是GPJ0_0~GPJ0_7
這次我們用到的是GPJ0_3,GPJ0_4,GPJ0_5
結合物理特性分析,在這裡LED,低電平亮/高電平滅
DataSheet中像GPJ0CON[3]這樣的名字不能直接在程式中用
IO與記憶體統一編址,CPU訪問暫存器和訪問記憶體是一樣的
2.2.20.1 Port Group GPJ0 Control Register (GPJ0CON, R/W, Address = 0xE020_0240)
2.2.20.2 Port Group GPJ0 Control Register (GPJ0DAT, R/W, Address = 0xE020_0244)
GPJ0CON(0xE020_0240)
GPJ0DAT(0xE020_0244)
兩個地址相差正好4個位元組(Byte),也就是32位(bit),正好
接下來我們需要準備東西
Makefile
mkv210_image.c
write2sd
start.S
其中start.S是我們這次要著手去寫的
_start:
ldr r0, =0x11111111
把0x11111111寫入0xE0200240
需要說明一下的是,ldr既是指令,也是偽指令,
這裡從=0x11111111可以看出是偽指令,
因為需要編譯器來判斷是合法還是非法立即數
一般都用ldr偽指令,暫存器從r0開始到r7開始用
如果要用指令,就應該這樣寫#0x11111111,
需要我們人為注意的是,這個數字必須是合法立即數
ldr r1, =0xE0200240
str r0, [r1]
這裡我居然弄反資料傳輸的方向了,
實際上是把r0中的數寫入r1中數為地址的記憶體中去,
還有這是暫存器間接定址
ldr r0, =0x0
ldr r1, =0xE020_0244
把0x0寫入0xE0200244
這個0x0實際上0x00000000,換算成二進位制就是32個0,
聯絡想下下面關於32的解釋。
str r0, [r1]
GPJ0DAT這個暫存器從資料手冊中檢視,只看到0~7位的定義,
實際上這個暫存器和GPJ0CON一樣也有32位,但是隻有0~7位是有效的,
高8~31位是無效的,
也就是說暫存器理論上是32位的,實際上可能沒有這麼多
flag:
b flag
在這裡為什麼要寫一個死迴圈?
裸機程式是直接執行在CPU上的,
CPU會逐行執行裸機程式,
直到CPU斷電關機,
如果這裡沒有指令,
而所有的程式碼又都執行完了,
它就會跑飛,
跑飛以後,
就是未定義的
下面看看make過程,更能幫你理解makefile的編寫
[email protected]:~/windows_share/1.leds_s# make
arm-linux-gcc -o start.o start.S -c
arm-linux-ld -Ttext 0x0 -o led.elf start.o
arm-linux-ld: warning: cannot find entry symbol _start; defaulting to 00000000
arm-linux-objcopy -O binary led.elf led.bin
arm-linux-objdump -D led.elf > led_elf.dis
gcc mkv210_image.c -o mkx210
./mkx210 led.bin 210.bin
相關推薦
一步步點亮LED3_從零開始手寫彙編點亮LED
《朱老師物聯網大講堂》學習筆記 結合上節內容可知 GPJ0埠一共有8個引腳,分別是GPJ0_0~GPJ0_7 這次我們用到的是GPJ0_3,GPJ0_4,GPJ0_5 結合物理特性分析,在這裡LED,低電平亮/高電平滅 DataSheet中像GPJ0CON[3]這
從零開始手寫 spring ioc 框架,深入學習 spring 原始碼
IoC Ioc 是一款 spring ioc 核心功能簡化實現版本,便於學習和理解原理。 創作目的 使用 spring 很長時間,對於 spring 使用非常頻繁,實際上對於原始碼一直沒有靜下心來學習過。 但是 spring 原始碼存在一個問題,那就是過於抽象,導致學習起來成本上升。 所以本專案由漸入深,只實
Python+Flask+Gunicorn 專案實戰(一) 從零開始,寫一個Markdown解析器 —— 初體驗
(一)前言 在開始學習之前,你需要確保你對Python, JavaScript, HTML, Markdown語法有非常基礎的瞭解。專案的原始碼你可以在 https://github.com/zhu-y/markdown-toolkit 找到,最後的
從零開始一起學習SLAM | 點雲平滑法線估計
參考 需要 後臺 不常用 為什麽 分表 覆蓋 了吧 完全 點擊公眾號“計算機視覺life”關註,置頂星標更快接收消息! 本文編程練習框架及數據獲取方法見文末獲取方式 菜單欄點擊“知識星球”查看「從零開始學習SLAM」一起學習交流 點雲濾波後為什麽還需要平滑? 小白:師兄
從零開始仿寫一個抖音App——音視訊開篇
本文於掘金——何時夕,搬運轉載請註明出處,否則將追究版權責任。交流qq群:859640274 GitHub地址 大家好,距離上次本專題發文已經有五個星期了,中間發了兩篇非本專題的文章,可能很多人都以為我要棄坑了。但是並不是這回事,主要是工作有點忙,而且我在音視訊方面其實也有許多東西需要學習和整理。那
從零開始仿寫一個抖音App——基於FFmpeg的極簡視訊播放器
本文發於掘金——何時夕,搬運轉載請註明出處,否則將追究版權責任。交流qq群:859640274 GitHub地址 好久不見,最近加班比較多所以第二篇音視訊方面的文章 delay 了一週,大家多包涵哈。本文預計閱讀時間二十分鐘。 本文分為以下章節,讀者可以按需閱讀 1.FFmpeg原始碼
從零開始仿寫一個抖音App——跨平臺視訊編輯SDK專案搭建
本文發於掘金——何時夕,搬運轉載請註明出處,否則將追究版權責任。交流qq群:859640274 GitHub地址 不知不覺已經到了2019年,本系列的文章也更新到了8篇。很慶幸筆者能堅持下來,從我司的程式碼中學習到了很多東西。當然更慶幸的是收穫了眾多讀者的鼓勵和支援。從本篇文章開始,我們將接觸短視訊
從零開始學寫HTTP伺服器(七)muduo+tinyhttpd
(一)前言 對muduo內嵌的HttpServer進行了稍微的改進,融入了TinyHttpd中對CGI部分內容。 (二)程式碼 (三)CGI 簡單的理解:如果客戶請求的是靜態資料,則web server直接將資料響應給客戶端,如果是動
從 0 開始手寫一個 Spring MVC 框架,向高手進階
Spring框架對於Java後端程式設計師來說再熟悉不過了,以前只知道它用的反射實現的,但瞭解之後才知道有很多巧妙的設計在裡面。如果不看Spring的原始碼,你將會失去一次和大師學習的機會:它的程式碼規範,設計思想很值得學習。 我們程式設計師大部分人都是野路子,不懂什麼
STM32F103+RTT從零開始(一)——點亮LED
最近心血來潮,打算重新撿起老本行,結果發現很多都忘記了。乾脆重新開始學習,並做個從零開始的筆記了。 STM32系列MCU STM32系列晶片包括F0/F1/F2/F3/F4/F7/L0/L1/L4/H7等系列晶片晶片。不同系列的晶片適用於不同的應用場景。
不使用 vue-cli 與 vue 模版,使用 Vue2.x + webpack4.x 從零開始一步步搭建專案框架
說明 這是我根據慕課網上的一個課程 Vue+Webpack打造todo應用 過程一步步搭下來的框架,去掉了業務相關的邏輯。 專案最終的效果包括了引入vue框架;使用CSS前處理器;使用babel;引用圖片等靜態資源;區分開發環境與生成環境,並做相應優化等。基本接近真正做專案時候的配置
現代前端開發路線圖:從零開始,一步步成為前端工程師
編者按:很多人都想學程式設計。但是苦於沒有具體的步驟和指導。比如想找份前端開發的工作,卻不知道應該先學習什麼再學習什麼,也不知道該選擇什麼樣的工具。因為經常被人問到類似的問題,全棧開發者Kamran Ahmed索性在github上制訂了一份現代前端開發的路線圖,並且用一篇文章
從零開始一步步寫LSTM
歡迎轉載,但請務必註明原文出處及作者資訊。 @author: huangyongye @creat_date: 2017-03-09 前言: 根據我本人學習 TensorFlow 實現 LSTM 的經歷,發現網上雖然也有不少教程,其中很多都是根據官方給出的例子,用
教程 | 一步步從零開始:使用PyCharm和SSH搭建遠端TensorFlow開發環境
作者:Erik Hallström 機器之心編譯 參與:機器之心編輯部 一般而言,大型的神經網路對硬體能力有著較高的需求——往往需要強勁的 GPU 來加速計算。但是你也許還是想拿著一臺筆記本坐在咖啡店裡安靜地寫 TensorFlow 程式碼,同時還能享受每秒數萬億次
從零開始學Xamarin.Forms(一) 概述
erl 系統 mod 重寫 fwe 依賴 模式 sil c# Xamarin 讀 “?z?m?rin”,是一個基於開源項目mono的可以使用C#開發的收費的跨平臺(iOS、Android、Windows Phone、Mac)解決方式。
【轉】【修真院“善良”系列之十八】WEB程序員從零開始到就業的全資料V1.0——只看這一篇就夠了!
absolute feed 自己 session rem 好的 ans 一個 css樣式 這是兩年以來,修真院收集整理的學習資料順序。以CSS15個任務,JS15個任務為基礎,分別依據要完成任務的不同的技能點,我們整理出來了這麽一篇在學習的時候需要看到的資料。這是Versi
從零開始學習OpenCL開發(一)架構
處理器 多媒體 c++ stl context 實驗 通用 必看 是你 同時存在 1 異構計算、GPGPU與OpenCL OpenCL是當前一個通用的由很多公司和組織共同發起的多CPU\GPU\其他芯片 異構計算(heterogeneous)的標準,它是跨平臺的。旨在充
從零開始學習jQuery (一) 開天辟地入門篇
完全 不同 喝茶 圖靈 lac 格式化 元素 script 引入 從零開始學習jQuery (一) 開天辟地入門篇 本系列文章導航 從零開始學習jQuery (一) 開天辟地入門篇 從零開始學習jQuery (二) 萬能的選擇器 從零開始學習jQuery (
從零開始玩轉JMX(一)——簡介和Standard MBean
pos cor csdn comm art order clas post tex 從零開始玩轉JMX(一)——簡介和Standard MBeanJMX超詳細解讀 參考資料JMX整理JMX簡介http://blog.csdn.net/DryKillLogic/articl
從零開始學Linux系統(一)
系統啟動 linux 自定義 管理 如果 level 技術 int 沒有 Linux系統:分時多用戶多任務的操作系統; Linux系統引導流程: inittab配置文件中: 定義了linux系統的運行的7個級別:從0~6 0、6:分別代表關機和重啟,不建議設置為默認的