移植Linux 5.5.3 到 TI AM4372平台

本文详细记录了将Linux 5.5.3内核移植到TI AM4372硬件平台的过程,包括修改设备树、编译内核、制作ITS文件、安装DFU工具以及针对LCD、触摸屏和CAN的配置。作者指出主线内核对开发平台支持良好,未来有望直接用于商业项目。
摘要由CSDN通过智能技术生成

 

前言

瘟疫期间,闲着无聊移植了从www.kernel.org上下载的linux 5.5.3到st的stm32f429-discovery和大升电气的am4372平台上。

大部分时间是在修改dts和menuconfig的配置,可见主线内核代码对大部分的开发平台已经做到了完美的支持,不久的未来应该可以绕过原厂,直接拿主线代码来商用了。

硬件平台介绍

大升的板子是以前为他们做bsp维护时遗留下来的,核心板链接见https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-17385140682.20.2fa11151Revp1b&id=566304029954,底板目前应该是不再生产了。底板具体资源有800×480的dpi接口的lcd,触摸屏,sd卡,ov2659/ov5640接口,usb host,usb device(用来做dfu升级很方便),调试串口uart0,千兆网口,485,can各一个,rtc锂电池电源。

由于没有核心板的原理图,核心板上本有一个led灯用heart功能的,暂时没有用起来。核心板的资源是800Mhz的am4372,512M的ddr内存两颗,4GB的emmc。ar8035 phy芯片。

TODO:

移植最新的u-boot,使用Buildroot工具制作ubifs的filesystem替换原有argo的文件系统,通过video来的数据做一些人脸识别,跟踪等。跑一些常用的gstreamer方面的远程监控的脚本。

修改细节

编译工具 www.linaro.org上下载https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabihf/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz

编译内核

mkdir ../kernel-am4372
make O=../kernel-am4372 omap2plus_defconfig
time make O=../kernel-am4372 zImage dtbs modules LOADADDR=0x80008000
 
错误 linux-5.5.3/scripts/extract-cert.c:21:25: fatal error: openssl/bio.h: No such file or directory
解决  sudo apt-get install libssl-dev
 

制作its文件用于打包zImage和dtb到am4372.itb

/*
 * Simple U-Boot uImage source file containing a single kernel and FDT blob
 */

/dts-v1/;

/ {
description = "Simple image with single Linux kernel and FDT blob";
#address-cells = <1>;

images {
kernel {
description = "Vanilla Linux kernel";
data = /incbin/("./kernel-am4372/arch/arm/boot/zImage");
type = "kernel";
arch = "arm";
os = "linux";
compression = "none";
load = <0x80008000>;
entry = <0x80008000>;
hash-1 {
algo = "crc32";
};
hash-2 {
algo = "sha1";
};
};
fdt-1 {
description = "Flattened Device Tree blob";
data = /incbin/("./kernel-am4372/arch/arm/boot/dts/am437x-gp-evm.dtb");
type = "flat_dt";
arch = "arm";
compression = "none";
hash-1 {
algo = "crc32";
};
hash-2 {
algo = "sha1";
};
};
};

configurations {
default = "conf-1";
conf-1 {
description = "Boot Linux kernel with FDT blob";
kernel = "kernel";
fdt = "fdt-1";
};
};
};

 

mkimage -f am4372.its am4372.itb

安装dfu工具用于通过usb device下载am4372.itb到0x82000000调试内核

cd dfu-util/
sudo apt-get build-dep dfu-util
sudo apt-get install libusb-1.0-0-dev
./autogen.sh 
./configure
make
 
设备端
setenv dfu_alt_info 'itb ram 0x82000000 0x4000000 '
dfu 0 ram 0
 
host端
sudo ../dfu-util/src/dfu-util -d 0403:bd00 -a itb -D ../am4372.itb
 

dts修改点

 
diff --git a/arch/arm/boot/dts/am437x-gp-evm.dts b/arch/arm/boot/dts/am437x-gp-evm.dts
index 811c8ca..15d34c7 100644
--- a/arch/arm/boot/dts/am437x-gp-evm.dts
+++ b/arch/arm/boot/dts/am437x-gp-evm.dts
@@ -16,9 +16,9 @@
        model = "TI AM437x GP EVM";
        compatible = "ti,am437x-gp-evm","ti,am4372","ti,am43";
 
-       aliases {
+       /*aliases {
                display0 = &lcd0;
-       };
+       };*/
 
        chosen {
                stdout-path = &uart0;
@@ -52,14 +52,16 @@
                enable-active-high;
        };
 
-       lcd_bl: backlight {
+       backlight {
                compatible = "pwm-backlight";
                pwms = <&ecap0 0 50000 PWM_POLARITY_INVERTED>;
                brightness-levels = <0 51 53 56 62 75 101 152 255>;
-               default-brightness-level = <8>;
+               default-brightness-level = <7>;
        };
+       
 
        matrix_keypad: matrix_keypad0 {
+               status = "disabled";
                compatible = "gpio-matrix-keypad";
                debounce-delay-ms = <5>;
                col-scan-delay-us = <2>;
@@ -85,35 +87,14 @@
                                0x0201006c>;      /* DOWN */
                };
 
-       lcd0: display {
-               compatible = "osddisplays,osd070t1718-19ts", "panel-dpi";
-               label = "lcd";
-
-               
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值