Linux内核移植_rom内核移植

Linux内核移植_rom内核移植这两天在友善的tiny210的实验板上移植了linux内核,正好和大家分享,同时也算是做个记录吧!首先介绍一下开发环境吧,这个在做移植的时候还是挺重要的。主机linux:Fedora9 安装在VMware虚拟机上;开发板 :友善的tiny210,256M的FLASH;移植linux:LINUX-3.3.5;交叉编译环境:arm-linux-gcc-4.4.3这个是友善24

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

 这两天在友善的tiny210的实验板上移植了linux内核,正好和大家分享,同时也算是做个记录吧!首先介绍一下开发环境吧,这个在做移植的时候还是挺重要的。

主机linux:Fedora9   安装在VMware虚拟机上;

开发板   :友善的tiny210,256M的FLASH;

移植linux:LINUX-3.3.5;

交叉编译环境:arm-linux-gcc-4.4.3 这个是友善2440里带的;

u-boot  :是网上找的,待会我给出源文件。

1.烧写启动文件

    要移植操作系统,肯定是需要启动代码了,也就是u-boot了。我自己没有移植u-boot,是从网上现找的。好吧,我上传一下,也方便大家下载。连接地址:http://download.csdn.net/detail/xie0812/6189627 是在windows下压缩的,里面包含两文件,分别为u-boot的源文件和直接用于下载用的.bin文件。u-boot有了,现在说说怎么把.bin文件烧写到sd上吧。首先把.bin文件拷贝到linux系统中,随便在一个文件夹下就行。下来就是往sd里烧写了,当然了sd是必须的嘛。这里给个插曲,把sd插到电脑后,windows下发现了,但虚拟里的linux系统发现不了,后来是通过这么解决的,点击VMware的VM—–>Rmovables Devices——->USB Device——>Rmovable disk,当然这是在发现不了sd的情况下才这样滴,而且可能跟虚拟机和主机上的linux系统有关,环境不一样可能会不同。当发现了sd后,就进入你放tiny210v2–uboot.bin的文件夹。这时你通过cat /proc/partitions 命令查看你的sd卡对应的设备文件的名字,这里我的是sdb,可能会有不同。好吧,现在文件准备好了,sd也发现了,就差烧写了。通过sudo dd iflag=dsync oflag=dsync if=tiny210v2-uboot.bin of=/dev/sdb seek=1 ,这个命令把.bin烧写到sd中,这里注意命令中的/dev/sdb一定是你sd卡在linux系统中的名字。

2.下载linux源代码

 咱们去linux官网上下载吧,这个是连接:https://www.kernel.org/   在这里下载linux-3.3.5。

3.修改Makefile文件

 下载到源代码后,首先是解压,解压的命令是 tar xvzf linux-3.3.5.tar.gz 这样就完成了解压。现在修改一些设置,为编译做准备。首先,修改linux下的Makfile文件,进入解压后的linux-3.3.5,通过vi Makefile 命令打开修改文件。在文件的195行和196行处修改,没修改以前的代码为:

ARCH		?= $(SUBARCH)
CROSS_COMPILE	?= $(CONFIG_CROSS_COMPILE:"%"=%)

修改后的代码为:

ARCH		?= arm
CROSS_COMPILE	?= /opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-

第一行的修改大家肯定是明白的嘛,因为咱们需要移植到arm上,所以是arm嘛。第二行的是你的交叉编译器所处的位置,可能每个人的目录会不同,看具体的情况来吧。这里简单的插入一句题外话,通过vi Makefile时,通过命令set nu可以使Makefile文件显示行数。

4.编译内核

   把smdk210v板子的config文件拷过来了,进行内核编译。简单的说一下,咱们在这里的移植是属于板级的移植,一般来说移植操作系统分为:体系结构级的移植、soc级的移植和板级的移植。板级的移植是最简单的,往往是在芯片制作厂商提供的样板的基础上做移植。当然一般来说,这就够了。好吧,不扯了。在linux-3.3.5目录下,通过cp arch/arm/configs/s5pv210_defconfig .config 把对smdkv210板的配置文件拷贝到linux-3.3.5目录下,并且保存为.config文件。现在把配置文件拷贝过了,通过命令:make menuconfig 进入配置界面进行配置吧。进入后的界面为:Linux内核移植_rom内核移植

这就是刚进入的界面,这时选择General setup 进入另外一个界面:Linux内核移植_rom内核移植

在图中选择可以看到的Cross-compiler tool prefix(new),然后输入交叉编译器的路径,输入后的结果为:Linux内核移植_rom内核移植

注意输入最后的是arm-linux-gcc,接下来退到刚开始的界面下,选择System Types——->这个选项Linux内核移植_rom内核移植

看到图中高亮的部分了,选中这个选项,把1改成0,为什么要改了,因为开发板上是用UART0输出信息的,如果不修改,会在启动内核的时候,无法显示信息。也就是在 Start kenel….之后不显示信息的缘故。修改后的效果图为:

Linux内核移植_rom内核移植

接下来的工作是继续退到刚进入的界面,选择Boot options——–>选项,进入后的效果图为:Linux内核移植_rom内核移植

同样看到图中高亮的部分了吧,用Enter键选择它,把里面的console=ttySAC1改为console=ttySAC0,其他的不变,由于也看不到效果,就不贴图了,这样就完成了内核的基本配置,很简单吧,当然这只是一个内核的雏形,其他的都没配置,所以简单了。现在开始编译吧,你也等不急了吧。运行 make uImage 命令,开始内核的编译。可惜,出现了下面的错误,没事,慢慢解决嘛

  OBJCOPY arch/arm/boot/zImage
  Kernel: arch/arm/boot/zImage is ready
  UIMAGE  arch/arm/boot/uImage
"mkimage" command not found - U-Boot images will not be built
make[1]: *** [arch/arm/boot/uImage] Error 1
make: *** [uImage] Error 2

看上面的提示是说找不到mkimage,原因就不说了,这个问题是这样解决的。拷贝一个mkimage文件到相应的交叉编译器的相应的目录下,mkimage是bootloader里tools目录下的一个文件,我这里提供的这个文件也是友善2440带的,给大家一个链接吧:
http://download.csdn.net/detail/xie0812/6191183因为我的交叉编译器的在/opt/FriendlyARM/toolschain/4.4.3,所以应该把它拷贝到
/opt/FriendlyARM/toolschain/4.4.3/bin目录下,同时把名字改为arm-linux-mkimage。对于这个问题,可能网上有许多解决的办法,我都试,但不行,最是这么解决的。如果你用这种办法不行的话,那就在网上在找找吧。看,这就顺利的编译完成了:

Image Name:   Linux-3.3.5
Created:      Sun Sep  1 11:14:07 2013
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    1181392 Bytes = 1153.70 kB = 1.13 MB
Load Address: 0x20008000
Entry Point:  0x20008000
  Image arch/arm/boot/uImage is ready

看到这个结果就证明已经编译通过了。不过现在只是内核编译通过,怎么样让它在tiny210上启动了,这个下一篇,咱们继续!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/189794.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java网络编程基础(Netty预备知识)[通俗易懂]

    今天在家休息,闲来无事,写篇博客,陶冶下情操~~~我是分割线最近在重新学习Java网络编程基础,以便后续进行Netty的学习。整理了一下重要的基础知识点,供大家参考。正在读这篇随笔的你是否遇到

    2022年2月16日
    38
  • 江诗丹顿geneve系列推荐大全_江诗丹顿geneve

    江诗丹顿geneve系列推荐大全_江诗丹顿geneve很多腕表印刻有众多的字母,比如“AUTOMATIC”英文,你知道这代表什么意思呢?这是自动机械表的标志,意味着腕表内部设计着上百个机械零件,也可带你感受机械运转的魅力。那么江诗丹顿geneve是什么意思呢?有什么与众不同的意义呢?学习可让你对腕表界有着更多的了解。江诗丹顿geneve是什么意思?有着什么意义呢?“geneve”,这是日内瓦的意思,也可引申为日内瓦印记,此印记有着百年历史,作用是对时…

    2025年8月12日
    2
  • 【Landsat 8】介绍

    【Landsat 8】介绍【Landsat8】介绍简介传感器OLI陆地成像仪TIRS热红外传感器相关阅读简介发射日期2013年2月11日传感器OLI,TIRS海拔高度705公里轨道倾角98.2°轨道类型近极轨,太阳同步轨道赤道穿越时间当地时间上午10:00(±15min)(降交点)轨道周期99分钟重访周期16天传感器Landsat8卫星包含OLI和TIRS两种传感器。OLI陆地成像仪包括9个波段,空间分辨率为30米,其中包括一个15米的全色

    2022年7月23日
    17
  • redis版本怎么查看(查看redis进程)

    1下载redis并且解压https://www.runoob.com/redis/redis-install.html2分别启动服务端和客户端3在服务端输入info命令,可以看到当前版本

    2022年4月13日
    35
  • ext grid设置选中行

    ext grid设置选中行varmodel=grid.getSelectionModel(); model.selectAll();//选择所有行 model.selectFirstRow();//选择第一行 model.selectLastRow([flag]);//选择最后一行,flag为正的话保持当前已经选中的行数,不填则默认falsemodel.selectN

    2022年7月27日
    3
  • BetterIntelliJ 激活码_在线激活

    (BetterIntelliJ 激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~41MD9IQHZL-eyJsaWNlb…

    2022年3月30日
    105

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号