上一节 uboot移植 uboot
1.首先进入官网下载下载源码 https://mirrors.edge.kernel.org/pub/linux/kernel/
下载最新5.8的版本
2.安装编译器,解压压缩包 ,配置makefile
这里的编译器下载需要linaro官网下载编译器 如果不会下载可以私信我
gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz//下载最新版本,也可以用其他的
然后配置编译环境
tar xvf linux-5.8.tar.gz
修改makefile 添加编译器信息
3.使用自带的配置,生成.config
make exynos_defconfig
接着配置芯片类型 进入
make menuconfig
这里我们选择4412类型。
然后进入第一级目录,然后进入选中Kernel low-level debugging functions (read help!) 最后选择串口二
接着返回原来目录
然后选择
最后make
因为要生成uImage
所有用这个指令
make uImage LOADADDR=0X40007000 -j4
最后arch/arm/boot/目录下就会生成内核映像文件
这里我们是用的讯为的板子 选择板级设备树 itop或者origen都可以 他们俩差不多的
修改板级文件
1.去掉这个启动方式
/*firmware@203f000 {
compatible = "samsung,secure-firmware";
reg = <0x0203F000 0x1000>;
};*/
将events改成event
&bus_dmc {
devfreq-events = <&ppmu_dmc0_3>, <&ppmu_dmc1_3>;
vdd-supply = <&buck1_reg>;
status = "okay";
};
4.编译设备树文件
make dtbs
生成设备树
最后烧写进去发现卡在
此时不要慌,打开调试信息
最后发现还是卡住了 卡在
进过几天查找定位 找到了问题 修改exynos4412.dfsi.增加这个status = “disabled”; 将其失能
sysmmu_fimc_isp: sysmmu@12260000 {
compatible = "samsung,exynos-sysmmu";
reg = <0x12260000 0x1000>;
interrupt-parent = <&combiner>;
interrupts = <16 2>;
power-domains = <&pd_isp>;
clock-names = "sysmmu";
clocks = <&isp_clock CLK_ISP_SMMU_ISP>;
status = "disabled";
#iommu-cells = <0>;
};
sysmmu_fimc_drc: sysmmu@12270000 {
compatible = "samsung,exynos-sysmmu";
reg = <0x12270000 0x1000>;
interrupt-parent = <&combiner>;
interrupts = <16 3>;
power-domains = <&pd_isp>;
clock-names = "sysmmu";
clocks = <&isp_clock CLK_ISP_SMMU_DRC>;
status = "disabled";
#iommu-cells = <0>;
};
sysmmu_fimc_fd: sysmmu@122a0000 {
compatible = "samsung,exynos-sysmmu";
reg = <0x122A0000 0x1000>;
interrupt-parent = <&combiner>;
interrupts = <16 4>;
power-domains = <&pd_isp>;
clock-names = "sysmmu";
clocks = <&isp_clock CLK_ISP_SMMU_FD>;
status = "disabled";
#iommu-cells = <0>;
};
sysmmu_fimc_mcuctl: sysmmu@122b0000 {
compatible = "samsung,exynos-sysmmu";
reg = <0x122B0000 0x1000>;
interrupt-parent = <&combiner>;
interrupts = <16 5>;
power-domains = <&pd_isp>;
clock-names = "sysmmu";
clocks = <&isp_clock CLK_ISP_SMMU_ISPCX>;
status = "disabled";
#iommu-cells = <0>;
};
sysmmu_fimc_lite0: sysmmu@123b0000 {
compatible = "samsung,exynos-sysmmu";
reg = <0x123B0000 0x1000>;
interrupt-parent = <&combiner>;
interrupts = <16 0>;
power-domains = <&pd_isp>;
clock-names = "sysmmu", "master";
clocks = <&isp_clock CLK_ISP_SMMU_LITE0>,
<&isp_clock CLK_ISP_FIMC_LITE0>;
status = "disabled";
#iommu-cells = <0>;
};
sysmmu_fimc_lite1: sysmmu@123c0000 {
compatible = "samsung,exynos-sysmmu";
reg = <0x123C0000 0x1000>;
interrupt-parent = <&combiner>;
interrupts = <16 1>;
power-domains = <&pd_isp>;
clock-names = "sysmmu", "master";
clocks = <&isp_clock CLK_ISP_SMMU_LITE1>,
<&isp_clock CLK_ISP_FIMC_LITE1>;
status = "disabled";
#iommu-cells = <0>;
};
最后烧写进去,就可以启动起来了
结果图:
最后还有一些自己既可以完善了 ,上面那个bug与camera有关。