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

u-boot 移植 --->6、引導Linux啟動測試

發布者:自在自由最新更新時間:2024-12-23 來源: cnblogs關鍵字:u-boot  移植  Linux 手機看文章 掃描二維碼
隨時隨地手機看文章

在引導Linux開機之前需要先清楚Linux啟動的必要或者說是先決條件,這里就是提到了u-boot的作用了引用百度云---主要用于嵌入式系統的引導加載,其實在我調試下來總結一下就是初始化硬件這里的硬件包括必要部分和不必要的部分,比如SOC的時鐘,外部RAM(DDR內存),棧等。因為linux的內核相對于SOC內部的RAM而言還是比較龐大的,并且運行Linux的SOC的主頻普遍是比較高的,受限于flash的訪問速度,Linux肯定是不能像單片機程序一樣放在片上flash運行的,畢竟在48M以上的時候常見的單片機都是需要加wait以匹配CPU和flash的速度差距了。所以u-boot一定的需要先初始化好RAM(DDR)然后將linux拷貝到RAM內來運行。所以Linux啟動的硬件環境和一些必須的軟件環境由u-boot負責配置好,最后也是u-boot將Linux內核放到DDR中最后把運行權交由Linux的代碼的。引導linux運行除了u-boot準備好的部分工作后剩下還有幾個分兩種情況。必須和設備樹配合的較新的內核版本和不需要設備樹的老內核。這兩種情況都需要根文件系統,設備樹則不一定。所以這里簡單記錄一下根文件系統的構建。


根文件件系統的構建

根文件系統是Linux啟動必須的,主要就是使用busybox進行配置和編譯后得到,除此之外如果不使用靜態連接的方式還需要交叉編譯工具的庫。首先下載busybox的源碼,然后解壓后開始配置。


1、添加編譯器


這里的套路和u-boot和linux的編譯之前相同就是修改頂層的makefile腳本的CORSS_COMOLIE為你自己的編譯工具,ARCH為你的目標架構。


2、增加中文支持這里參考開源電子網的修改


修改目錄libbb/printable_string.c文件


const char* FAST_FUNC printable_string(uni_stat_t *stats, const char

*str)

     {

     char *dst;

     const char *s;

    

     s = str;

     while (1) {

    ......

     if (c < ' ')

     break;

     /* 注釋掉下面這個兩行代碼 */

     /* if (c >= 0x7f)

    break; */

    s++;

}


繼續修改/libbb/unicode.c


static char* FAST_FUNC unicode_conv_to_printable2(uni_stat_t*stats, const char *src, unsigned width, int flags)

 {

   char *dst;

   unsigned dst_len;

   unsigned uni_count;

   unsigned uni_width;

  

   if (unicode_status != UNICODE_ON) {

   char *d;

   if (flags & UNI_FLAG_PAD) {

   d = dst = xmalloc(width + 1);

  ......

   /* 修改下面一行代碼 */

   /* *d++ = (c >= ' ' && c < 0x7f) ? c : '?'; */

   *d++ = (c >= ' ') ? c : '?';

   src++;

   }

   *d = '

主站蜘蛛池模板: 霍邱县| 丹阳市| 大厂| 龙川县| 伊川县| 湟源县| 东城区| 青冈县| 巴彦淖尔市| 昌平区| 娱乐| 潍坊市| 磐石市| 三原县| 吉隆县| 青州市| 寿宁县| 思茅市| 碌曲县| 宝坻区| 肃宁县| 绥芬河市| 营口市| 西乌珠穆沁旗| 白朗县| 海林市| 丹棱县| 双峰县| 南漳县| 朝阳县| 柏乡县| 华池县| 安陆市| 博乐市| 淄博市| 靖江市| 武穴市| 阿城市| 江阴市| 巧家县| 响水县|