移植uboot,並且修改配置引數,系統啟動方式總結
(文章屬個人總結,如有理解錯誤,請不惜指教。)
前言:uboot,其實就是比較複雜的裸板程式,核心是命令,最終的目的,是啟動kernel。
uboot的啟動,分有兩個階段。
第一階段:
(每個階段首先需要做的,都是初始化硬體,這個也是uboot的優點和作為。)
CPU/*/start.S /board/*/ lowlevel_init.S
①初始化硬體:設定異常向量(比如未定義向量、軟體中斷、資料操作異常等,這些需要的時候看程式碼吧。)
這個過程中,還需要CPU進入SVC模式,其實就是寫一個值到暫存器,0x10011到r0暫存器。
關看門狗,往看門狗暫存器寫入值0。
②拷貝uboot到SDRAM
③設定棧SP,sp指標指向一段沒有被使用的記憶體就完成棧的設定
④清空BSS段(全部把不用的清除掉,防止佔用資源) 初始值為0,無初始值的全域性變數,靜態變數將自動被放在BSS段
將這些變數的初始值賦為0,否則這些變數的初始值將是一個隨機的值,若有些程式直接使用這些沒有初始化的變數將引起未知的後果。
⑤跳轉到第二階段執行C程式碼 ldr pc, _start_armboot
start_armboot函式在lib_arm/board.c中定義,是U-Boot第二階段程式碼的入口
第二階段:
①板級初始化
串列埠:為了控制,列印命令
時鐘;CPU可以控制外圍裝置
其他環境變數。這個過程會列印uboot的版本資訊之類的。
②記憶體對映
檢測SDRAM記憶體大小,配置可以用的RAM大小。
③載入核心影像+根檔案系統映像
初始化NOR或者NAND
④設定核心啟動引數
⑤啟動核心
目標:修改系統啟動方式為SD卡以及EMMC
首先,我們知道,uboot的預設啟動方式是NOR flash,現在基於這個基礎上,增加SD卡啟動以及EMMC啟動。
EMMC,實際上就是nand flash+主控IC,nand flash可以快讀讀寫,但是在讀寫的時候,需要做一些特定事情,這些事情,也是判斷是nand還是nor啟動,所以這裡就暫時不討論EMMC啟動方式了,進入主題:SD卡啟動
IROM的啟動方式,裡面提供有SD卡啟動方式的支援。
注意點:
①SD卡里面,不管怎麼格式化,還是會顯示,佔用有8KB記憶體,這是怎麼回事呢?
答:因為這是預留給分割槽表使用的。實際上,我們用不到8K,只是預留這麼多而已。
②使用dd命令,將Uboot拷貝到SD卡
整個思路:
全志平臺CPU,內建的韌體,是支援uboot從不同的儲存介質啟動的,但是,uboot的預設啟動方式是NOR flash,這個時候,我們如果移植uboot的話,需要修改uboot裡面的啟動引數,意思就是說,uboot引導啟動kernel到rootfs,預設是從nor flash上面啟動的,現在,我們想把kernel以及rootfs,也就是通俗的說,系統,從SD卡或者EMMC啟動。
這些引數,可以在uboot的mian.c裡面修改,寫死。
也可以在uboot命令列模式下setenv配置,然後重新啟動即可。
相關推薦
移植uboot,並且修改配置引數,系統啟動方式總結
(文章屬個人總結,如有理解錯誤,請不惜指教。)前言:uboot,其實就是比較複雜的裸板程式,核心是命令,最終的目的,是啟動kernel。 uboot的啟動,分有兩個階段。第一階段:(每個階段首先需要做的,都是初始化硬體,這個也是uboot的優點和作為。)
16.如何做到webpack打包vue項目後,可以修改配置文件
r.js all config rest 技術分享 req api local err 問題描述: 前端需要修改restful API的url,但是打包之後,配置文件找不到了,如果在npm run build 生成dist後,這個配置也被寫死了,傳到運行的前端服務器上後,假
redis安裝,修改配置檔案,多例項部署 redis-server
redis 安裝 解壓: [[email protected] software]# tar -xvf redis-3.2.11.tar.gz 進入redis根目錄: [[email protected] software]# cd redis-3.2.11/ 編譯安裝: [[
spring-boot提供類可以直接修改tomcat引數,例如port
文件參考:https://docs.spring.io/spring-boot/docs/2.0.1.BUILD-SNAPSHOT/reference/html/ @Bean public ConfigurableServletWebServerFactory webServerFa
Mysql忘記密碼登入,並且修改密碼
one 進入電腦mysql的安裝目錄,並且找到data 比如我的就是C:\Program Files\MySQL\MySQL Server 8.0\data two 找到字尾為.err的檔案 比如我的為下圖 three 記事本開啟.err檔案,然
ngnix優化,高併發配置引數worker_processes
/etc/nginx/nginx.conf worker_processes預設為1,官方說1一般情況足夠了 也可以設定為cpu核心說,2或者4或者8,再高沒大意義 或者省事些,直接設定為auto,根據需求自動調整 參考
linux系統redis修改配置檔案,允許外網訪問,新增登入密碼
修改配置檔案redis.conf sudo vim /etc/redis/redis.conf 重啟redis服務(非常重要) /etc/init.d/redis-server restart 下面開始登入 當輸入redis-cli的時候是登入不進去
Spring定時任務開發,實現動態修改時間引數,手動開啟關停等
@Service @Lazy(false) @EnableScheduling public class MyScheduler extends BaseService implements SchedulingConfigurer{ public static String cron
js引數傳遞陣列物件,修改此引數,會影響原陣列嗎
1,方法中改變了原資料的,會影響原陣列,包括單個的賦值,排序 var a = [1,2,3]; function test(arr){ arr[0] = 4;//直接改變原陣列的第一個資料,影響原陣列,故改變了原陣列。 console.log(arr);//
spring mvc 中通過controller 傳遞物件給jsp,並且資料繫結,在修改值後回傳物件給controller
在controller 中需要指定 sessionAttribute的key @sessionattributes註解應用到Controller上面,可以將Model中的屬性同步到session當中。 當需要清除session當中的值得時候,我們只需要在
Android自定義控制元件之畫圓,並且修改其填充色
畫圓就是簡答呼叫了drawCircle的api public class Dot extends View { public Dot(Context context) { s
Qt中QDomDocument,讀取txt檔案和xml檔案,並且修改xml檔案和儲存修改後的檔案
此文件main.cpp檔案分為兩部分: 1】上面是讀取txt文件的程式碼 2】下面是讀取和修改xml文件的內容,並且儲存xml修改的程式碼 #include<QGuiApplication> #include<QQmlApplicationEngine&
CentOS7.5下修改配置檔案,使正常顯示中文
雷:在CentOS 7以前的版本下,預設的字符集路徑一般儲存在/etc/sysconfig/i18n 檔案中。但是在CentOS 7版本中,字符集配置檔案位於/etc/locale.conf。 在修改該檔案之前,可以在命令列介面輸入locale -all先檢視
MDK,關於 STM32F4 配置失敗, GPIO, USART 寫入值沒反應
pos blog 位置 size inf 需要 str bsp font 需要先將RCC->AHB1ENR寄存器的對應時鐘打開! 下面做個測試: 配置GPIO實驗 沒有打開時鐘使能,配置無反應: 打開時鐘使能後,可以成功寫入數據:
Restful風格,PUT修改功能請求,表單中存在文件報錯-HTTP Status 405 - Request method 'POST' not supported
for 文件的 文件 roo spring commons 容量 put common 解決方案配置如下 <!-- 配置文件上傳解析器 --> <bean id="multipartResolver" class="org.spri
java--Fibonacc由數字1、1、2、3...組成的,從第三個數字起每一個數字為前兩個數字的和。建立一個方法,接受一個整數引數,顯示從第一個元素開始總共由該引數指定的個數所構成的所有斐波那契數
題目完整描述:一個斐波那契數列是由數字1、1、2、3、5、8、13、21、34等等組成的,其中每一個數字(從第三個數字起)都是前兩個數字的和。建立一個方法,接受一個整數引數,並顯示從第一個元素開始總共由該引數指定的個數所構成的所有斐波那契數字。例如,如果執行 java Fibonacci 5(Fib
關於servlet3中,使用註解配置之後,訪問無效的解決方法
web專案中的web.xml檔案的根元素如果是從其他地方拷貝的,如下所示 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
在建立server的時候,選擇tomcat8後,server name為空,並且無法手動輸入,同時無法進行下一步操作。
解決方案如下: 1.退出eclipse。 2.找到eclipse[工作空間][當前專案].metadata/.plugins/org.eclipse.core.runtime/.settings/下 3.刪除兩個檔案,檔名是org.eclipse.wst.server.core.pref
使用SpringMVC的crud操作時,進行資料修改,但是修改成功後,頁面無法顯示lastName屬性值(被修改的那條記錄)
我這個錯誤的原因在於,把map的鍵寫錯了,它必須和類名第一個字母小寫相同 @ModelAttribute public void getEmployee(@RequestParam(value="id",required=false) Integer id, Map&l
Struts2學習筆記:DMI,多個配置檔案,預設Action,字尾
動態方法呼叫有三種方法: 1.同一Action多次對映,每個action標籤的method對應要呼叫的方法。 當要呼叫的方法多了就會增加struts.xml檔案的複雜性。 2.struts.DynamicMethodInvocation=true (struts.properties檔案) 或<