U-Boot

Linux compilation | Invalid entrypoint

被刻印的时光 ゝ 提交于 2021-01-20 07:10:22
问题 I am compiling a linux kernel using mipsel toolchain. Everything works fine except at the very last point which states invalid entry point: sh: 0: Can't open /arch/mips/boot/tools/entry rm -f arch/mips/boot/vmlinux.bin.gz gzip -9 arch/mips/boot/vmlinux.bin mkimage -A mips -O linux -T kernel -C gzip \ -a 0x80010000 -e \ -n 'Linux-2.6.31.3-g29b45174-dirty' \ -d arch/mips/boot/vmlinux.bin.gz arch/mips/boot/uImage mkimage: invalid entry point -n Now it mentioned sh: 0: Can't open /arch/mips/boot

Linux内核分析:Linux内核启动流程分析

自古美人都是妖i 提交于 2021-01-14 03:10:40
(注:本文参考资料:朱有鹏嵌入式课程、 大神博客 。本文为个人学习记录,如有错误,欢迎指正。 内核版本: 九鼎公司移植的2.6.35.7 ) 1. Linux内核自解压过程 uboot完成系统引导以后,执行环境变量bootm中的命令;即,将Linux内核调入内存中并调用do_bootm函数启动内核,跳转至kernel的起始位置。如果内核没有被压缩,则直接启动;如果内核被压缩过,则需要进行解压,被压缩过的kernel头部有解压程序。 压缩过的kernel入口第一个文件源码位置在/kernel/arch/arm/boot/compressed/head.S。它将调用decompress_kernel()函数进行解压,解压完成后,打印出信息“Uncompressing Linux...done,booting the kernel”。解压缩完成后,调用gunzip()函数(或unlz4()、或bunzip2()、或unlz())将内核放于指定位置,开始启动内核。 P.S.: 内核格式类型详见 。 2. Linux内核启动准备阶段 由内核链接脚本/kernel/arch/arm/kernel/vmlinux.lds可知,内核入口函数为stext(/kernel/arch/arm/kernel/head.S)。内核解压完成后,解压缩代码调用stext函数启动内核。 P.S.

四,移植uboot-支持NOR,NAND 操作

本小妞迷上赌 提交于 2021-01-12 08:30:28
文档时间:2018-08-11 交叉编译器:arm-linux-gcc-4.3.2 Ubuntu版本:16.04 uboot版本:2013.10 1,修改代码支持 nor flash 操作 前面章节已经实现NOR,NAND 启动,但是还不支持nor,nand flash 操作,如下图打印信息所示: Flash: *** failed ***,搜索发现,此段错误信息在第二阶段 board_init_r 函数中,此函数位于 arch/arm/lib/board.c 文件中,代码如下所示: #if !defined(CONFIG_SYS_NO_FLASH) puts( " Flash: " ); flash_size = flash_init(); if (flash_size > 0 ) { # ifdef CONFIG_SYS_FLASH_CHECKSUM print_size(flash_size, "" ); /* * Compute and print flash CRC if flashchecksum is set to 'y' * * NOTE: Maybe we should add some WATCHDOG_RESET()? XXX */ if (getenv_yesno( " flashchecksum " ) == 1 ) { printf( " CRC:

2.移植uboot-添加2440单板,并实现NOR、NAND启动

喜你入骨 提交于 2021-01-12 08:04:03
上章分析了 uboot启动流程 后,接下来便来配置新的单板,实现nor、nand启动 1.首先在uboot里新建单板2440 1.1 将2410的单板文件夹拷贝成 2440 : cd board/samsung/ cp smdk2410 smdk2440 -rf // 拷贝文件夹, 然后将smdk2440下的smdk2410.c改为 smdk2440.c ,以及修改更改好的Makefile 1.2 将2410的头文件拷贝成 2440 : cd ../../include/configs/ cp smdk2410.h smdk2440.h 2.新建后,还需要修改boards.cfg,使uboot支持2440单板: 仿照 smdk2410 arm arm920t - samsung s3c24x0 添加: smdk2440 arm arm920t - samsung s3c24x0 添加后,就能够使用 make smdk2440_config 命令. (该命令便会调用include/configs/smdk2440.h和board/samsung/smdk2440里的文件来配置uboot) 3.修改uboot系统时钟 在start.S里,uboot只设置了 CLKDIVN寄存器 而2440的系统时钟需要设置两个寄存器: MPLLDIVN (设置FCLK频率)、 CLKDIVN

使用Buildroot为I.MX6制作根文件系统

烈酒焚心 提交于 2021-01-05 16:50:59
1.引言 接触Freescale/NXP的I.MX6处理器大概有了两年多的时间,对于一个最初玩MCU的我来说,真是面临了很多的挑战。最让我感到郁闷和崩溃的是那个官方的基于Yocto的开发环境,搭建它要求真是太高了,机器得有上百G的空间,Ubuntu系统版本也有要求,还要能翻墙等等,另外还得去理解Yocto的架构。我在尝试过两次之后准备彻底的放弃研究它了。前两天由于工作需要,不得不再一次面对要自己去编译文件系统的问题,碰巧在网上看到有人用Buildroot弄成功过,我尝试了下,没太费力气就成功了,Buildroot比Yocto简单太多了。特以此文记录下,希望对大家有所帮助。 2.环境介绍 对本文涉及到的硬件和软件环境统一做个说明。 2.1.硬件 1)我使用的是米尔科技的I.MX6ULL的小板子,当时参加一个网上的活动,免费送我的,板子做的小巧精致,和以前Freescale的Freedom开发板很像,赞,携带和使用太方便了。大家如果用的是I.MX其他系列,本文内容同样适用。 2)一根Micro USB接口线,用于给小板供电、同时兼下载程序用,这个设计很好,不用单独再接电源。 3)一个USB转TTL串口,用于接调试串口,登录系统用。 4)一根网线,用于连接PC和板子,验证ssh和scp功能。 2.2.软件 1) http://down.myir-tech.com/MYS-6ULX/

LS1046调试记录(三)-UBOOT移植概要

放肆的年华 提交于 2020-12-30 10:02:40
对于LS1046A芯片,在开发自主板卡时,采用的开发环境是LSDK或者SDK,之前提过最好是使用LS系列芯片开发时最好是采用最新的LSDK进行。其实,LSDK与SDK在代码架构和移植过程中,基本上完全是一致的,所以本移植过程也同样适用于SDK开发环境。 在LSDK中,rcw以及u-boot都位于firmware(固件)目录下: 开发自主板卡时,一般以开发板的代码和环境为参照,在此之上进行更改。以LS1046A为例,有LS1046ARDB和LS1046AQDS作为参考,根据自己板卡与哪块更为相似进行修改即可,这个与vxworks的bsp开发很相似。 板卡代码在如下目录: 同时,比较重要的头文件定义在如下目录: 这个头文件很重要,是主要的修改对象。 熟悉完修改目录后,就可以进行移植了,步骤大体如下: 1. DDR配置修改; 主要文件是修改ddr.c和ddr.h,如果自主板卡是DIMM的,使用SPD配置DDR就可以不用修改,因为所有参数都是在内存的EEPROM里面读出来的。但是,如果是DDR颗粒就需要查看LS1046A DDR控制器以及DDR颗粒datasheet来进行配置,这个时候需要修改ddr.c的代码。可以参照p1010的过程进行。 2. ETH配置修改: 主要修改eth.c文件,和头文件,修改内容为接口裁剪、PHY地址修改等。 3. 系统配置 主要修改如系统时钟、ddr时钟

九,Linux-3.19内核支持挂载NFS文件系统

╄→尐↘猪︶ㄣ 提交于 2020-12-28 08:02:30
文档时间:2018-08-25 交叉编译器:arm-linux-gcc-4.3.2 Ubuntu版本:16.04 kernel版本:linux-3.19 一,在 Ubuntu 上安装配置 NFS 1),安装 NFS 输入命令 sudo apt-get install nfs-kernel-server 安装 nfs-kernel-server: 输入命令 sudo apt-get install nfs-common 安装 nfs-common 这是挂载 nfs目录所需要的: 2),建立共享工作目录 输入命令: /home/aaron/ work mkdir nfs_root // 建立工作目录 chmod 777 nfs_root // 修改nfs_root权限 把制作好的根文件系统 fs_new 拷贝到 nfs_root 目录下 3),配置 NFS 打开 /etc/exports,添加如下内容: /home/aaron/work/nfs_root *(rw,sync,no_root_squash,no_subtree_check) * : 允许所有的网段访问 rw : 挂接此目录的客户端对该目录具有读写权限 sync :资料同步 no_root_squash :root 用户对文件目录具有完全访问权限 no_subtree_check :不检查父目录的权限 配置完成后,重启

七,移植linux-3.19内核

╄→гoц情女王★ 提交于 2020-12-28 05:49:14
文档时间:2018-08-18 交叉编译器:arm-linux-gcc-4.3.2 Ubuntu版本:16.04 kernel版本:linux-3.19 1,分析 uboot 如何启动内核 通过之前对环境变量保存的分析可知,uboot是通过 bootcmd 来启动内核的,在 include/configs/jz2440.h 中我们有定义: #define CONFIG_BOOTCOMMAND "nand read 0x30000000 kernel; bootm 0x30000000" // bootcmd 有以下图片可知:执行 bootcmd 时,会将内核代码从nand 读到内存30000000 处,然后开始执行。 由于要执行 bootm 命令,所以我们需要打开与 bootm 命令相关的文件进行分析,从名字可知,需要打开 cmd_bootm.c (位于 common 目录下)文件,找到对应的 do_bootm 函数: ( PS:一般与 xxx 命令相关的文件都在 common 目录下,名为cmd_xxx.c ) 如上图,可以看出,do_bootm 会执行 boot_os 里的所有函数,进入到 boot_os 结构体中: 发现,虽然函数很多,但是与启动内核有关的只有 do_bootm_linux 函数,进入到 do_bootm_linux 函数 (位于 arch/arm/lib

使用Buildroot为I.MX6制作根文件系统

荒凉一梦 提交于 2020-12-24 06:34:48
1.引言 接触Freescale/NXP的I.MX6处理器大概有了两年多的时间,对于一个最初玩MCU的我来说,真是面临了很多的挑战。最让我感到郁闷和崩溃的是那个官方的基于Yocto的开发环境,搭建它要求真是太高了,机器得有上百G的空间,Ubuntu系统版本也有要求,还要能翻墙等等,另外还得去理解Yocto的架构。我在尝试过两次之后准备彻底的放弃研究它了。前两天由于工作需要,不得不再一次面对要自己去编译文件系统的问题,碰巧在网上看到有人用Buildroot弄成功过,我尝试了下,没太费力气就成功了,Buildroot比Yocto简单太多了。特以此文记录下,希望对大家有所帮助。 2.环境介绍 对本文涉及到的硬件和软件环境统一做个说明。 2.1.硬件 1)我使用的是米尔科技的I.MX6ULL的小板子,当时参加一个网上的活动,免费送我的,板子做的小巧精致,和以前Freescale的Freedom开发板很像,赞,携带和使用太方便了。大家如果用的是I.MX其他系列,本文内容同样适用。 2)一根Micro USB接口线,用于给小板供电、同时兼下载程序用,这个设计很好,不用单独再接电源。 3)一个USB转TTL串口,用于接调试串口,登录系统用。 4)一根网线,用于连接PC和板子,验证ssh和scp功能。 2.2.软件 1) http://down.myir-tech.com/MYS-6ULX/

全志A33屏幕旋转(Android)

假装没事ソ 提交于 2020-12-19 06:56:15
0x00 环境说明: 所使用的开发板为锐尔威视的插针版A33_Vstar 屏幕是买的第三方的KD050FWFPA011-C009A,其中LCD驱动IC为ILI9806E 0x01 LCD驱动移植: 关于LCD驱动程序的编写/移植参考以前的一篇文章: https://www.cnblogs.com/DarkBright/p/10769858.html 大致流程如下(具体程序参考以前的文章): 1、修改配置文件,路径: /root/android/lichee/tools/pack/chips/sun8iw5p1/configs/vstar/sys_config.fex (具体路径根据根据SDK的解压路径略作修改) 2、修改uboot中的LCD驱动,路径: /root/android/lichee/brandy/u-boot-2011.09/drivers/video_sunxi/sunxi_v2/de_bsp/lcd/panels/default_panel.c 3、修改Linux内核中的LCD驱动,路径: /root/android/lichee/linux-3.4/drivers/video/sunxi/lcd/panels/default_panel.c 0x02 编译uboot: 切换到uboot目录下执行: make distclean make sun8iw5p1