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上启动了,这个下一篇,咱们继续!

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Java学习路线图[通俗易懂]

    Java学习路线图[通俗易懂]一、Java学习路线图   二、Java学习路线图——视频篇 六大阶段学完后目标知识点配套免费资源(视频+笔记+源码+模板)密码     第一阶段Java基础 入门学习周期:35天学完后目标:1.可进行小型应用程序开

  • 第十一周上机项目2 求最大公约数「建议收藏」

    第十一周上机项目2 求最大公约数「建议收藏」问题及代码:/**Copyright(c)2014,烟台大学计算机学院*Allrightsreserved.*文件名称:test.cpp*作者:曹莉萍*完成日期:2014年10月27日*版本号:v1.0**问题描述:求几个数的最大公约数*输入描述:输入几个不同的整数,求出这几个数的最大公约数*程序输出:最大公约数*/#in

  • BetterIntelliJ-1.19 通用激活码【最新永久激活】[通俗易懂]

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

  • linux清屏命令[通俗易懂]

    1)clear这个命令将会刷新屏幕,本质上只是让终端显示页向后翻了一页,如果向上滚动屏幕还可以看到之前的操作信息。一般都会用这个命令。(2)reset这个命令将完全刷新终端屏幕,之前的终端输入操作信息将都会被清空,这样虽然比较清爽,但整个命令过程速度有点慢,使用较少。(3)另外介绍一个用别名来使用清屏命令的方法,如下:[root@localhost~]$aliascls=‘clea…

  • os模块的简单使用

    os模块的简单使用

  • 添加背景音乐的html标签是music,添加背景音乐的html标签是什么,

    添加背景音乐的html标签是music,添加背景音乐的html标签是什么,添加背景音乐的html标签是什么添加背景音乐的html标签是什么,添加背景音乐的html标签是bgsound。bgsound用于插入背景音乐,但只适用于IE,不适用于netscape和firefox。它的参数很少设置,语法是“bgsoundsrc=’bjyy.mp3′loop=-1”。推荐:《HTML视频教程》添加背景音乐的html标签是bgsound。Bgsound用于插入背景音乐,但只适…

发表回复

您的电子邮箱地址不会被公开。

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