前面已经搭建好了Ubuntu下的海思开发环境,现在对编译Uboot和Kernel的过程做一个简单的记录。参考文档《Hi3519V101 U-boot 移植应用开发指南.pdf》和《Hi3519V101 Linux开发环境用户指南.pdf》。

编译U-boot

步骤1:cd /hisilicon/Hi3519V101_SDK_V1.0.2.0/osdrv/opensource/uboot
步骤2:tar -xvf u-boot-2010.06.tgz
步骤3:cd u-boot-2010.06/
执行命令:

make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- hi3519_config

  生成hi3519_config文件

make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux-

  生成u-boot.bin

步骤4:配置DDR存储器。

  在Windows下打开SDK中的”osdrv/tools/pc/uboot_tools”目录下的配置表格。当选用不同的DDR SDRAM时,需要针对不同器件的特性,对配置工作表中的标签页【mddrc_dmc0】和【mddrc_phy0】进行修改。

步骤5:配置管脚复用

  如果管脚复用有变化,还需要对配置表格中的标签页【multiplex】进行修改

步骤6:生成最终的U-boot镜像

  完成配置表格的修改后,保存表格。单击表格第一个标签页上的按钮【Generage reg  bin file】 (只能点此按钮),生成临时文件 reg_info.bin ,将临时文件 reg_info.bin 和编译 u-boot 得到的 u-boot.bin 都**拷贝到 SDK 中的 “osdrv/tools/pc/uboot_tools/”目录**下,

  执行命令:

    ./mkboot.sh reg_info.bin u-boot-hi3519v101.bin

  其中 u-boot-hi3519v101.bin 就是能够在单板上运行的 U-boot 镜像

编译Linux-3.18.y的内核

 

步骤1:执行 cd /hisilicon/Hi3519V101_SDK_V1.0.2.0/osdrv/opensource/kernel/linux-3.18.y
步骤2:执行 cp arch/arm/configs/hi3519v101_big_little_defconfig .config
步骤3:执行 make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- menuconfig
出现错误:

scripts/kconfig/lxdialog/dialog.h::: fatal error: curses.h: 没有那个文件或目录
compilation terminated.
scripts/Makefile.host:: recipe for target 'scripts/kconfig/mconf.o' failed
make[]: *** [scripts/kconfig/mconf.o] Error
Makefile:: recipe for target 'menuconfig' failed
make: *** [menuconfig] Error

  原因:没有相关依赖库,需要安装libncurses5-dev 
解决方法:

  1、sudo apt-get update

  2、sudo apt-get install libncurs*

步骤4:在menu中选择需要编译到内核中的模块,然后保存退出。按两下ESC退出。

步骤5:

 make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- clean
make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- menuconfig
make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- uImage

编译出错:

"mkimage" command not found - U-Boot images will not be built
arch/arm/boot/Makefile:: recipe for target 'arch/arm/boot/uImage' failed
make[]: *** [arch/arm/boot/uImage] Error
arch/arm/Makefile:: recipe for target 'uImage' failed
make: *** [uImage] Error

  原因:一般linux编译生成的是zImage,如果要编译成uImage,需要有mkimage工具

解决方法:

  步骤1:cd /hisilicon/Hi3519V101_SDK_V1.0.2.0/osdrv/opensource/uboot/u-boot-2010.06/tools
  步骤2:cp mkimage /usr/bin
  步骤3:make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- uImage
  最后,在cd /hisilicon/Hi3519V101_SDK_V1.0.2.0/osdrv/opensource/kernel/linux-3.18.y/arch/arm/boot生成zImage和uImage

  

Hi3519V101 Uboot和Kernel编译的更多相关文章

  1. AM3359之U-boot及kernel编译

    我用的PC主机是ubuntu12.04 LST 32位系统给出官方软件下载地址:TI官网SDK包06.00版本下载:http://software-dl.ti.com/sitara_linux/esd ...

  2. 4412开发板搭建Uboot、Kernel和Android4.0的编译环境方法

    本文转自迅为4412开发板实战教程书籍:http://www.topeetboard.com 迅为是基于Ubuntu12.04.2平台做开发,所有的配置和编译脚本也是基于此平台,没有在其它平台上测试过 ...

  3. am335x uboot, kernel 编译

    一.设置环境变量 // 写在家目录下面的 .bashrc 里面 export KERNEL_PATH=~/aplex/kernel3.2.0 // kernel 路径 export UBOOT_PAT ...

  4. Tiny4412 虚拟机交叉编译环境的设置以及编译u-boot 和 kernel

    从CD 里面拷贝如下文件到虚拟机里面 解压 查看是否有如下文件 tiny4412_qt@chenfl:~/tiny4412$ ls opt/FriendlyARM/toolschain/4.5.1/b ...

  5. Hi3559AV100-自己编译了u-boot、kernel及rootfs后,出现烧写错误或者烧写后板载无法启动的解决思路

    这篇随笔主要给出了Hi3559AV100-自己编译了u-boot.kernel及rootfs后,出现烧写错误或者烧写后板载无法启动的解决思路. 问题 (1)对于 u-boot 为官方的,kernel ...

  6. Hi3516开发笔记(四):Hi3516虚拟机编译uboot、kernel、roofts和userdata以及分区表

    若该文为原创文章,转载请注明原文出处本文章博客地址:https://hpzwl.blog.csdn.net/article/details/121572767红胖子(红模仿)的博文大全:开发技术集合( ...

  7. RK3568开发笔记(四):在虚拟机上使用SDK编译制作uboot、kernel和buildroot镜像

    前言   上一篇搭建好了ubuntu宿主机开发环境,本篇的目标系统主要是开发linux+qt,所以需要刷上billdroot+Qt创建的系统,为了更好的熟悉原理和整个开发过程,选择从零开始搭建rk35 ...

  8. RK3568开发笔记(五):在虚拟机上使用SDK编译制作uboot、kernel和ubuntu镜像

    前言   buildroot虽然灵活,但是基于实际情况,本身是侧重驱动和应用定制开发的只定制一次文件系统投入有点多,还不如直接ubunt自己交叉编译依赖库,做一些库的移植裁剪.  于是本篇就使用ubu ...

  9. 嵌入式 uboot以及kernel添加看门狗临时记录(个人记录未整理乱)

    Uboot_Kernerl_Add_Watch_Dog: U-Boot 2010.06 (Nov 01 2013 - 15:28:44) DRAM:  128 MiBCheck spi flash c ...

随机推荐

  1. 17995 Stupid thief 组合数学

    17995 Stupid thief 时间限制:1000MS  内存限制:65535K提交次数:0 通过次数:0 题型: 编程题   语言: 不限定 Description A stupid thie ...

  2. Function ereg() is deprecated in

    PHP 5.3 ereg() 无法正常使用,提示"Function ereg() is deprecated Error".问题根源是php中有两种正则表示方法,一个是posix, ...

  3. go实现生产者消费者

    package main import ( "fmt" "math/rand" ) func main() { ch := make(chan int) don ...

  4. P1791 线段覆盖

    题目描述 已知数轴上0<N<10000条线段.每条线段按照端点Ai和Bi(Ai<>Bi,i=1..N)定义.端点坐标在(-999,999)内,坐标为整数.有些线段可能相交.编程 ...

  5. socket使用非阻塞connect

    在使用tcp的connect调用时,默认是使用阻塞方式,当服务器当前不可用时,connect会等待(内部在重试?)直到超时时间到达,而这个超时时间是系统内核规定的,不能使用setSocketOpt来设 ...

  6. 实训随笔:EL表达式JSON应用

    由于之前在学校写的jsp页面都是夹杂着java代码的,所以之前写了个jsp,满满的<%%>和java代码,老师说那样太不美观了啊!!!要全部用EL表达式替代了.本人还是太笨了,弄了一上午才 ...

  7. LightOJ 1422 Halloween Costumes (区间DP,经典)

    题意: 有个人要去参加万圣节趴,但是每到一个趴都要换上特定的服装,给定一个序列表示此人要穿的衣服编号(有先后顺序的),他可以套很多件衣服在身上,但此人不喜欢再穿那些脱下的衣服(即脱下后就必须换新的), ...

  8. 允许Java App(applet)粘贴方法

    修改安全策略文件: "java.policy" JRE6的路径在:"C:\Program Files (x86)\Java\jre6\lib\security" ...

  9. 使用javap分析Java的字符串操作

    我们看这样一行简单的字符串赋值操作的Java代码. String a = "i042416"; 使用命令行将包含了这行代码的Java类反编译查看其字节码: javap -v con ...

  10. LVM逻辑分区的优缺点与步骤

    一.LVM简介 1. 什么是LVM? LVM是 Logical Volume Manager(逻辑卷管理)的简写 2. 为什么使用LVM? LVM通常用于装备大量磁盘的系统,但它同样适于仅有一.两块硬 ...