国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

查看: 997|回復: 0
打印 上一主題 下一主題

移植Linux-5.4+內核到4412開發板

[復制鏈接]
跳轉到指定樓層
樓主
發表于 2020-6-24 11:07:54 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
前言
ITOP-4412開發板被Linux官方支持,所以我們在4412上學習新的內核是非常方便的,本文作者是4412精英群8群一位技術高手,接下來,我們一起來欣賞下他的表演。
環境說明
OS版本
Ubuntu 20 LTS


交叉編譯環境配置
~$ sudo apt install gcc-arm-linux-gnueabihf
~$ sudo apt install flex
~$ sudo apt install bison
~$ sudo apt install u-boot-tools
目標開發板

CPU (Exynos4412,四核Cortex-A9,主頻為1.4GHz-1.6GHz)
RAM (1GB 雙通道 DDR3)
ROM (8GB EMMC)
其他請見官網鏈接

1. 下載源碼
~$ git clone https://github.com/jason416/linux.gi
Note:移植好的源碼見博主github倉庫的iTop4412分支。

2. 配置內核
2.1 進入內核源碼目錄
~/linux-5.4$ ls
arch   COPYING  Documentation  include  Kbuild   lib          Makefile  README   security  usr
block  CREDITS  drivers        init     Kconfig  LICENSES     mm        samples  sound     virt
certs  crypto   fs             ipc      kernel   MAINTAINERS  net       scripts  tools
jason@jason-vm2:~/arm-develop/linux$
2.2 修改內核配置

說明:
Note: 官方提供了所有三星系列的默認配置,需要先生成一個exynos的配置為基礎,再上面再修改成跟板子一致的配置選項即可。
為了避免每次都需要指定ARCH和CROSS_COMPILE變量,可以直接在頂層Makefile直接指定好,如下所示:


選擇系統類型
System Type  --->
      Samsung EXYNOS  --->
        --- Samsung EXYNOS
        []   SAMSUNG EXYNOS3
          SAMSUNG EXYNOS4
        []   SAMSUNG EXYNOS5
            *** EXYNOS SoCs ***                                                        
          -*-   SAMSUNG EXYNOS4210                                                        
         
   SAMSUNG EXYNOS4412

配置調試串口 - 設置為UART2
  Kernel hacking  --->
     
Kernel low-level debugging functions (read help!)
        Kernel low-level debugging port (Use Samsung S3C UART 2 for low-level debug)  --->
開啟串口調試驅動
Device Drivers  --->
      Character devices  --->
        Serial drivers  --->
          <*> Samsung SoC serial support
         
   Samsung SoC serial debug
         
   Support for console on Samsung SoC serial port
開啟DM96XX網卡驅動
    Device Drivers  --->
     
Network device support  --->
        <*>   USB Network Adapters  --->
          <*>     Davicom DM96xx based USB 10/100 ethernet devices
設置內核壓縮模式為LZMA(非必須,可減小文件大小)
    General setup  --->
      ()  Build ID Salt
          Kernel compression mode (LZMA)  --->
編譯內核
~/linux-5.4$ make uImage LOADADDR=0x40008000 -j$(nproc)
...
  OBJCOPY arch/arm/boot/zImage
  Kernel: arch/arm/boot/zImage is ready
  UIMAGE  arch/arm/boot/uImage
Image Name:   Linux-5.4.47
Created:      Sun Jun 21 22:41:40 2020
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    5337464 Bytes = 5212.37 KiB = 5.09 MiB
Load Address: 40008000
Entry Point:  40008000
  Kernel: arch/arm/boot/uImage is ready
      這里需要指定LOADADDR變量,才能生成正確的uImage文件。因為在uboot啟動內核時,會先解析uImage中的前64B頭信息,定義如下:


3. 修改設備樹(以適配開發板)
3.1 說明
在前面的步驟完成后,已經能夠編譯出可以運行的內核了,但是最后還需要根據板子的差異性,對設備樹文件進行調整,以適配目標板。
3.2 修改

屏蔽掉firmware節點(安全相關,不啟用,也不知道怎么用…)
修改bus_dmc 節點devfreq-events為devfreq-event
修改regulators 節點參數(參考原理圖中的參數)
修改如下:
--- a/arch/arm/boot/dts/exynos4412-itop-scp-core.dtsi
+++ b/arch/arm/boot/dts/exynos4412-itop-scp-core.dtsi
@@ -23,10 +23,12 @@
     reg = <0x40000000 0x40000000>;
   };

+#if 0
   
firmware@203f000 {
     compatible = "samsung,secure-firmware";
     reg = <0x0203F000 0x1000>;
   };
+#endif

   fixed-rate-clocks {
     xxti {
@@ -70,7 +72,7 @@
};

&bus_dmc {
-  devfreq-events = <&ppmu_dmc0_3>, <&ppmu_dmc1_3>;
+  devfreq-event = <&ppmu_dmc0_3>, <&ppmu_dmc1_3>;
   vdd-supply = <&buck1_reg>;
   status = "okay";
};
@@ -167,8 +169,8 @@
     regulators {
       ldo1_reg: LDO1 {
         regulator-name = "VDD_ALIVE";
-        regulator-min-microvolt = <1100000>;
-        regulator-max-microvolt = <1100000>;
+        regulator-min-microvolt = <1000000>;
+        regulator-max-microvolt = <1000000>;
         regulator-always-on;
         regulator-boot-on;
         op_mode = <1>; /* Normal Mode */
@@ -230,8 +232,8 @@

       ldo9_reg: LDO9 {
         regulator-name = "VDD33_LCD";
-        regulator-min-microvolt = <3300000>;
-        regulator-max-microvolt = <3300000>;
+        regulator-min-microvolt = <3000000>;
+        regulator-max-microvolt = <3000000>;
         op_mode = <1>; /* Normal Mode */
       };

@@ -252,8 +254,8 @@
       ldo12_reg: LDO12 {
         regulator-name = "VDD33_UOTG";
-        regulator-min-microvolt = <3300000>;
-        regulator-max-microvolt = <3300000>;
+        regulator-min-microvolt = <3000000>;
+        regulator-max-microvolt = <3000000>;
         regulator-always-on;
         op_mode = <1>; /* Normal Mode */
       };
@@ -300,8 +302,8 @@
       /* Used by HSIC */
       ldo18_reg: LDO18 {
         regulator-name = "VDDIOPERI_28";
-        regulator-min-microvolt = <3300000>;
-        regulator-max-microvolt = <3300000>;
+        regulator-min-microvolt = <2800000>;
+        regulator-max-microvolt = <2800000>;
         regulator-always-on;
         op_mode = <1>; /* Normal Mode */
       };
@@ -313,15 +315,15 @@

       ldo20_reg: LDO20 {
         regulator-name = "VDD28_CAM";
-        regulator-min-microvolt = <1800000>;
-        regulator-max-microvolt = <2800000>;
+        regulator-min-microvolt = <3000000>;
+        regulator-max-microvolt = <3000000>;
         op_mode = <1>; /* Normal Mode */
       };

       ldo21_reg: LDO21 {
         regulator-name = "VDD28_AF";
-        regulator-min-microvolt = <1800000>;
-        regulator-max-microvolt = <2800000>;
+        regulator-min-microvolt = <3000000>;
+        regulator-max-microvolt = <3000000>;
         op_mode = <1>; /* Normal Mode */
       };

@@ -341,8 +343,8 @@
       ldo24_reg: LDO24 {
         regulator-name = "VDD33_A31";
-        regulator-min-microvolt = <3300000>;
-        regulator-max-microvolt = <3300000>;
+        regulator-min-microvolt = <3000000>;
+        regulator-max-microvolt = <3000000>;
         op_mode = <1>; /* Normal Mode */
       };

@@ -430,8 +432,8 @@
       buck7_reg: BUCK7 {
         regulator-name = "pvdd_buck7";
-        regulator-min-microvolt = <750000>;
-        regulator-max-microvolt = <2000000>;
+        regulator-min-microvolt = <2050000>;
+        regulator-max-microvolt = <2050000>;
         regulator-boot-on;
         regulator-always-on;
         op_mode = <1>; /* Normal Mode */
3.3 編譯dts

~/linux-5.4$ make dtbs
4. 啟動測試

根據另一個專題《Uboot-2017-11移植DM9621網卡專題》移植的支持網絡功能的uboot,和移植的ubuntu-base-20.04-base-armhf文件系統(下篇文章更新移植方法),可以直接tftp測試內核,效果如下:


到這一步,移植工作就完成了,是不是覺得很容易呢~


更多內容關注公眾號噢:


您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人精品一区久久久久 | 日韩欧美中文字幕一区 | 色婷婷精品免费视频 | 午夜网站免费版在线观看 | 国产精品三级一区二区 | 国产91播放 | 欧美整片完整片视频在线 | 国产精品麻豆网站 | 国产精品成人观看视频网站 | 一区二区三区在线观看免费 | 日本高清不卡在线观看 | 在线免费观看国产视频 | h成年同人动漫在线观看网站 | 国产激情一区二区三区成人91 | 狠狠色视频 | 黄网站色成年片在线观看 | a在线免费 | 黄色免费网页 | 天天操天天干天天玩 | 四虎永久网址在线观看 | 精品一区中文字幕 | 黄色片在线免费观看视频 | 人蛇大战4免费完整版 | 99热精品在线播放 | 在线观看免费精品国自产 | 国产夫妻久久线观看 | 免费人成网站在线高清 | 99re在线这里只有精品 | 日韩亚洲人成在线 | 日本欧美视频在线观看 | 亚洲a∨精品一区二区三区下载 | 国产成人免费网站在线观看 | 亚洲精品天堂自在久久77 | 国产小视频在线看 | 日本成人免费网站 | 欧美区一区二区三 | 国内精品亚洲 | 免费一级毛片在线播放放视频 | 亚洲人性生活视频 | 久久99国产综合精品 | 亚洲一区在线观看视频 |