uboot和kernel移植

uboot移植

1.编译和链接 mkconfig 2.start.s  3.ddr 4.重定位 5.sd卡驱动移植 6.环境变量 7.网卡

1.时钟和DDR配置 2.ddr地址配置 3.网卡驱动

从官方版本的uboot来移植

第一个问题:

start.s移植时

b low_level_init出错(用led灯来定位问题,链接的时候错误,要放到前8K)

在.lds链接脚本里加上low_level_init.o

但是重定义。在.s那边makefile生成.o链接了一次,.lds又链接了一次。参考start.s .那边用一个新的START :=start.o,来all里面加start 来保证编译,却不链接到最终的lib里。

2.ddr配置

移植:ddr配置  md mw 可以用说明ddr_init是正确的 bdinfo查看ddr大小是0x2000000

修改

(base address(0x20000000->0x30000000,连续的512M地址,memconfig(chip_base和掩码硬件),.h(软件 base address)) bank size(0x2000000->0x1000000)) 

MMU那边.set __base 0x200 -> 0x300

读取扩展csd寄存器,读取到的version错误(return 0 低版本的控制器( <4)读不了高版本的卡) 卡的版本号>5 

1.移植必要的头文件(.c或者.s中需要的头文件直接copy过来,然后include该头文件)

2.对头文件进行修整 (把头文件中黑色的都删除掉)

3.重定位移植

1.重定位和清bss段代码移植

2.movi_bl2_copy函数的移植:.c文件移植过来,.c中include的头文件移植过来。在.c中除了movi_bl2_copy函数外,其他都删除掉。在movi_bl2_copy也可以将一些代码删除掉(安全相关的)

报错:某行某个宏没定义,实际是那行却没有那个宏,因为那行的宏中包含的其他宏没有定义。

sd卡移植(SD、TF、MMC总结_Write Freely的博客-CSDN博客

bring_up:卡能识别,读写正常

3.sdhci_transfer_data函数出错,

把三星uboot中的sd/mm驱动整个移植过来。或者参考三星的驱动来修补。

kernel

问题1:
看到starting kernel ...就结束,没看到uncompress Linux
原因:自解压的地址(mach/Makefile.boot zreladdr-y := 0x20008000(改成0x30008000) params_phys-y :=0x30001000)和链接地址(物理地址,在head.S 0x30008000)不相等。

问题2:
uncompressing linux 但是后面没了,内核还没运行
内核的起始地址从0x20000000改成0x30000000

问题3:
启动了
machine_start 机器码定义一个开发板的机器吗:machine_desc结构体

问题4:unable to handile null pointer at 0000060
PC is at dev_driver_string
LR is at max8698_pmix_probe
三星的开发配置了pmic,驱动加载的时候出错了。屏蔽掉。

问题5:kernle panic unable to mount rootfs unknown-block(0,0)
结合backtrace可以确定挂载这块有问题
没找到mmcblk0p2
去移植mmc驱动
SD(sd的0扇区就是mbr(放置分区信息),sd的1扇区存放bl1)
fdisk -c 0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《基于zynqmp的uboot移植kernel移植教程(非Petalinux开发方式).pdf》是一份关于基于Zynq MP SoC的U-Bootkernel移植教程的文档。这份教程主要介绍了如何将U-Bootkernel移植到基于Zynq MP SoC的板子上,并且使用非Petalinux的开发方式。 在这份教程中,首先会介绍Zynq MP SoC的基本知识,包括其硬件架构、启动流程等。然后会详细讲解如何从源码编译和配置U-Boot,包括交叉编译环境的搭建、配置U-Boot的环境参数等。接着会介绍如何将编译好的U-Boot烧录到板子上,并通过串口进行调试。 在移植kernel的部分,教程会分享如何配置Linux内核,包括选择适合的内核版本和配置选项。然后会讲解如何进行内核的编译,并将编译好的内核镜像烧录到板子上。最后,教程还会介绍如何配置文件系统和启动参数,以便正确启动内核。 整篇文档详细叙述了U-Bootkernel移植方法,提供了具体的步骤和截图进行演示,对于想要进行Zynq MP SoC的开发者来说非常有帮助。同时,也提供了一些调试技巧和常见问题的解决方法,帮助开发者更快地定位和解决问题。 总之,《基于zynqmp的uboot移植kernel移植教程(非petalinux开发方式).pdf》这份教程是一份非常实用的资料,对于想要进行Zynq MP SoC的U-Bootkernel移植的开发者来说是一份很好的参考指南。 ### 回答2: 《基于ZynqMP的Uboot移植Kernel移植教程(非Petalinux开发方式).pdf》是一本关于在ZynqMP上进行Uboot移植Kernel移植的教程。ZynqMP是赛灵思公司生产的一款嵌入式处理器,具有双核ARM Cortex-A53处理器和硬件可编程逻辑的特点。 该教程提供了一步一步的指导,帮助读者学习如何将Uboot引导加载程序和Kernel操作系统移植到ZynqMP平台上。 首先,教程介绍了ZynqMP的基本架构和硬件资源,包括处理器核心、外设和可编程逻辑。然后,教程详细解释了UbootKernel的概念和功能,以及它们在嵌入式系统中的作用。 接下来,教程介绍了UbootKernel移植流程。针对Uboot移植,教程首先讲解了Uboot的编译和烧录过程,然后指导读者如何修改Uboot的配置文件以适配ZynqMP平台的硬件资源。针对Kernel移植,教程详细讲解了Kernel的编译和配置选项,以及设备树的使用方法。教程还涵盖了UbootKernel之间的交互过程,以及如何使用设备树来访问硬件资源。 最后,教程提供了一些常见问题的解答和调试技巧,帮助读者在实际的移植过程中解决可能遇到的问题。 总之,《基于ZynqMP的Uboot移植Kernel移植教程(非Petalinux开发方式).pdf》是一本非常实用的教程,适合想要在ZynqMP平台上进行UbootKernel移植的嵌入式开发人员阅读和参考。 ### 回答3: 基于ZynqMP的U-Boot移植Kernel移植教程(非Petalinux开发方式)是一本介绍如何在ZynqMP平台上进行U-BootKernel移植的教材。下面将用300字阐述一些主要内容。 首先,该教程对ZynqMP平台进行了简要介绍,包括其硬件架构、资源分配和系统框图等。读者可以了解到ZynqMP平台的基本特点,为后续的移植工作打下基础。 在U-Boot移植方面,教程详细介绍了U-Boot的编译方法和启动过程,包括编译工具链的安装、配置并编译整个U-Boot项目,并将编译好的U-Boot镜像烧写到目标设备上。 接下来,教程介绍了如何进行Kernel移植。教程首先介绍了ZynqMP平台上常用的Linux内核版本,并提供了基础的内核源码下载链接。然后,教程详细解释了Kernel的配置方法,包括使用make menuconfig进行配置和修改配置文件。读者可以学习如何根据具体需求进行内核配置,定制适合自己应用场景的内核。 另外,教程还介绍了设备树文件(Device Tree)的使用和配置。它解释了设备树文件的结构和作用,并提供了例子,让读者了解如何进行自定义设备的配置。 最后,教程还介绍了如何通过串口进行调试和启动,以及如何通过网络进行远程调试等内容。这些内容对于实际应用和调试非常有用。 总而言之,基于ZynqMP的U-Boot移植Kernel移植教程(非Petalinux开发方式)详细介绍了如何在ZynqMP平台上进行U-BootKernel移植工作。通过这本教程,读者可以学习到基本的移植方法和技巧,并且可以根据教程中的例子进行实践,提升自己在嵌入式系统开发方面的能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值