Bootloader系列(二)vivi bootloader解析
在地址0x0的地方存放著如下程式碼:
@ 0x00: Reset
bReset
這句會跳轉到Reset的地方執行,順序如下:
1. 關閉watchdog
@ disable watch dog timer
movr1, #0x53000000
movr2, #0x0
strr2, [r1]
2. 禁用中斷
@ disable all interrupts
movr1, #INT_CTL_BASE
movr2, #0xffffffff
strr2, [r1, #oINTMSK]
ldrr2, =0x7ff
strr2, [r1, #oINTSUBMSK]
3. 初始化系統時鐘
@ initialise system clocks
movr1, #CLK_CTL_BASE
mvnr2, #0xff000000
strr2, [r1, #oLOCKTIME]
@ldrr2, mpll_50mhz
@strr2, [r1, #oMPLLCON]
#ifndef CONFIG_S3C2410_MPORT1
@ 1:2:4
movr1, #CLK_CTL_BASE
movr2, #0x3
strr2, [r1, #oCLKDIVN]
mrcp15, 0, r1, c1, c0,
orrr1, r1, #[email protected] Asynchronous
mcrp15, 0, r1, c1, c0, [email protected] write ctrl register
@ now, CPU clock is 200 Mhz
movr1, #CLK_CTL_BASE
ldrr2, mpll_200mhz
strr2, [r1, #oMPLLCON]
#else
@ 1:2:2
mov r1, #CLK_CTL_BASE
ldr r2, clock_clkdivn
str r2, [r1, #oCLKDIVN]
mrc p15, 0, r1, c1, c0, 0 @ read ctrl register
orr r1, r1, #0xc0000000 @ Asynchronous
mcr p15, 0, r1, c1, c0, 0 @ write ctrl register
@ now, CPU clock is 100 Mhz
mov r1, #CLK_CTL_BASE
ldr r2, mpll_100mhz
str r2, [r1, #oMPLLCON]
#endif
blmemsetup
請注意,最後一句是跳轉語句,跳轉到記憶體初始化的地方,同時把下一句的地址儲存到R14,當記憶體初始化結束後就可以用movpc, lr這句來返回。
4. 記憶體控制器配置
ENTRY(memsetup)
@ initialise the static memory
@ set memory control registers
movr1, #MEM_CTL_BASE
adrlr2, mem_cfg_val
addr3, r1, #52
1:ldr r4, [r2], #4
strr4, [r1], #4
cmpr1, r3
bne1b
movpc, lr
5. 開啟LED
@ All LED on
movr1, #GPIO_CTL_BASE
addr1, r1, #oGPIO_F
ldrr2,=0x55aa
strr2, [r1, #oGPIO_CON]
movr2, #0xff
strr2, [r1, #oGPIO_UP]
movr2, #0x00
strr2, [r1, #oGPIO_DAT]
6. UART初始化
@ set GPIO for UART
movr1, #GPIO_CTL_BASE
addr1, r1, #oGPIO_H
ldrr2, gpio_con_uart
strr2, [r1, #oGPIO_CON]
ldrr2, gpio_up_uart
strr2, [r1, #oGPIO_UP]
blInitUART -------------- 同樣是跳轉到InitUART
相關推薦
Bootloader系列(二)vivi bootloader解析
在地址0x0的地方存放著如下程式碼: @ 0x00: ResetbReset 這句會跳轉到Reset的地方執行,順序如下: 1. 關閉watchdog@ disable watch dog timermovr1, #0x53000000movr2, #0x0strr2, [r1]
Java原始碼解析系列(二)ArrayList原始碼解析
備註:以下都是基於JDK8 原始碼分析 ArrayList簡介 ArrayList 是一個數組佇列,相當於 動態陣列。與Java中的陣列相比,它的容量能動態增長。它繼承於AbstractList,實現了List, RandomAccess, Clonea
SpringBoot系列(二)啟動原理解析
要想了解開一輛車首先你要知道,這輛車的駕駛座在哪,以及它是如何啟動的。接下來我們就一起了解一下SpringBoot的啟動原理,之前說過這是SpringBoot入口那麼下面來看幾個註解------ @SpringBootApplication 我們不難發現@SpringBoot
faster rcnn pytorch 復現系列(二):generate_anchors原始碼解析
目錄 1. 總函式 generate_anchors 2. 函式分功能寫,首先是ratios的實現,其次是scale的實現 3. anchor2WHXY函式+WsHsXsYs2anchors函式[s表示複數] 4. _ratio_enum(anchor,r
Fragment全解析系列(二):正確的使用姿勢
Fragment是可以讓你的app縱享絲滑的設計,如果你的app想在現在基礎上效能大幅度提高,並且佔用記憶體降低,同樣的介面Activity佔用記憶體比Fragment要多,響應速度Fragment比Activty在中低端手機上快了很多,甚至能達到好幾倍!如果你的app當前或以後有移植平板等平臺時,
Spring Boot乾貨系列:(二)配置檔案解析
Spring Boot使用“習慣優於配置”(專案中存在大量的配置,此外還內建了一個習慣性的配置,讓你無需手動進行配置)的理念讓你的專案快速執行起來。所以,我們要想把Spring Boot玩的溜,就要懂得如何開啟各個功能模組的預設配置,這就需要了解Spring Boo
爬蟲系列(二)——網頁解析Jsoup
Jsoup是一款Java的HTML解析器,可直接解析某個URL地址、HTML文字內容。它提供了一套非常省力的API,可通過DOM,CSS以及類似於jQuery的操作方法來取出和操作資料。
SpringBoot基礎實戰系列(二)springboot解析json與HttpMessageConverter
# SpringBoot解析Json格式資料 ### @ResponseBody 注:該註解表示前端請求後端controller,後端響應請求返回 `json` 格式資料前端,實質就是將java物件序列化 #### 1.建立Controller 注:springboot預設就已經支援返回`json`格式資料,
雪飲者 決策樹系列(二)決策樹應用
ssi 字符串長度 mes pla 選擇 font com vector nac 本篇以信息增益最大作為最優化策略來詳細介紹決策樹的決策流程。 首先給定數據集,見下圖 註:本數據來源於網絡 本篇將以這些數據作為訓練數據(雖然少,但足以介紹清楚原理!),下圖是決
數據結構系列(二)算法
nal log 如何 空間復雜度 計算 youdao 最好 時間 bsp 高斯求和 計算1+2+...+100 算法的概念就不多說了 強調一點就是,沒有通用的算法,就像永遠沒有銀彈,所有的算法都有自己的適用領域 評判算法好壞的方法 復雜度用大O表示,又分為時間復雜度
【原創】源碼角度分析Android的消息機制系列(二)——ThreadLocal的工作過程
機制 simple hand 這就是 數據存儲 read etc lena 並且 ι 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 在上一篇文章中,我們已經提到了ThreadLocal,它並非線程,而是在線程中存儲數據用的。數據存儲以後,只能在指定的線程中獲取到數據
MySQL系列(二)
sql read 註意 出現 back 總結 lba 區別 不同 MySql 事務 目錄 MySQL系列(一):基礎知識大總結 MySQL系列(二):MySQL事務 MySQL系列(三):索引 什麽是事務(transaction) 保證成批操作要麽完全執行,要麽完全不
Linux系統運維常見面試簡答題系列(二)(14題)
local 企業 nginx服務 簡答題 ip協議 php out gin 報錯 1. /var/log/messages日誌出現kernel:nf_conntrack:tablefull,dropping packet,請問是什麽原因導致的,如何解決? 此報錯為iptab
Linux VPS/服務器建站系列(二)- 常見的國內雲服務器商家
數據中心 log 中心 相互 網站 能說 之前 體積 選擇 繼續接"Linux VPS/服務器建站系列(一)- 哪些人需要用服務器建站"文章,既然我們開始決定選擇VPS、服務器作為項目用途。在準備實際的操作之前,筆者先準備羅列國內和國外的常見雲服務器商家。因為服務器商家和方
SpringMVC系列(二): 註解@RequestMapping、@PathVariable
ann handler -- back 聯合 ppi 根目錄 處理方法 ati 一、@RequestMapping 1.@RequestMapping除了能修飾方法,還能修飾類(1)修飾類:提供初步的請求映射信息,相對於web請求的根目錄(2)修飾方法:提供進一步的細分映射
Docker系列(二)鏡像管理
nginx orm lda cast anaconda rip search fff spa 2.1 查看鏡像 [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docke
JDBC詳解系列(二)之加載驅動
red mar mys ons try path 替換 host man ---[來自我的CSDN博客](http://blog.csdn.net/weixin_37139197/article/details/78838091)--- ??在JDBC詳解系列(一)之流程中
詳解YUV系列(二)--YUV422
proc 衍生 watermark term fff 本質 image 描述 采樣 hi,各位小夥伴,小編又來了嘍,今天該給大家分享一下YUV422嘍,還是老規矩,老套路哦: 一、文字描述采樣格式:YUV422的采樣格式,簡單理解就是一個2*2的像素塊中,對於4個像素點,采
容器開啟數據服務之旅系列(二):Kubernetes如何助力Spark大數據分析
容器 控制臺 摘要: 容器開啟數據服務之旅系列(二):Kubernetes如何助力Spark大數據分析 (二):Kubernetes如何助力Spark大數據分析 概述 本文為大家介紹一種容器化的數據服務Spark + OSS on ACK,允許Spark分布式計算節點對阿裏雲OSS對象存儲的直接訪問。
FuelPHP 系列(二) ------ route 路由
ray align 文件中 數字 eve 區分 creat 內容 ont FuelPHP 中,默認可以通過 /controller_name/function_name 這種方式來訪問,也可以通過自定義路由來訪問。 路由配置在 /fuel/app/config/rout