linux-2.6.30.4移植至2440开发板经验谈

移植内核2.6.24.4到S3C2440   百经周折,终于新内核启动了新的系统。多谢小卒的指导,还有这两篇文章的作者,给了我很多帮助。http://blog.chinaunix.net/u2/63560/showart_511924.htmlhttp://blog.csdn.net/hongjiujing/archive/2007/09/19/1790842.aspx很多工作还刚开始,先记录下来,别以后自己都忘了。 阅读详情

转自http://blog.youkuaiyun.com/sanlinux/archive/2009/11/22/4852575.aspx

一、下载linux-2.6.30.4源码,并解压

ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.30.4.tar.gz

tar zxvf linux-2.6.30.4.tar.gz

并且下载支持ARM的补丁文件,给标准内核打上ARM补丁。

ftp://ftp.arm.linux.org.uk/pub/linux/arm/kernel/v2.6/patch-2.6.0-rmk2.bz2

二、在系统中添加对ARM的支持

$vim Makefile

193#ARCH           ?= $(SUBARCH)
194 #CROSS_COMPILE  ?=
195 ARCH=arm
196 CROSS_COMPILE=arm-linux-

三、修改系统时钟

$vim arch/arm/mach-s3c2440/mach-smdk2440.c

系统的外部时钟为12MHz

160 static void __init smdk2440_map_io(void)
161 {
162         s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));
163         //s3c24xx_init_clocks(16934400);
164         //edit by San

165         s3c24xx_init_clocks(12000000);
166         s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs));
167 }

四、制作或者获取内核配置单.config

$make menuconfig

五、修改机器码

【linux内核源码中查看机器码相关文件:】

$vim arch/arm/mach-s3c2440/mach-smdk2440.c

178 MACHINE_START(S3C2440 , "SMDK2440")
179         /* Maintainer: Ben Dooks <ben@fluff.org> */
180         .phys_io        = S3C2410_PA_UART,
181         .io_pg_offst    = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,
182         .boot_params    = S3C2410_SDRAM_PA + 0x100,
183
184         .init_irq       = s3c24xx_init_irq,
185         .map_io         = smdk2440_map_io,
186         .init_machine   = smdk2440_machine_init,
187         .timer          = &s3c24xx_timer,
188 MACHINE_END

修改机器码,使之与bootloader的机器码相同,这里使用的是u-boot,机器码为168

$vim arch/arm/tools/mach-types

 379 s3c2440                  ARCH_S3C2440            S3C2440                 168

$vim arch/arm/tools/Makefile

 7 include/asm-arm/mach-types.h : $(src)/gen-mach-types $(src)/mach-types
 8         @echo '  Generating $@'
 9         @mkdir -p $(dir $@)
10         $(Q)$(AWK) -f $^ > $@ || { rm -f $@; /bin/false; }

$vim include/asm/mach-types.h

375 #define MACH_TYPE_S3C2440              168


【U-boot中的相关配置文件】

$vim include/asm-arm/mach-types.h

377 #define MACH_TYPE_S3C2440              168

总结:首先从linux内核源码中找出机器类型(如S3C2440 ),其次,根据u-boot中给出的对应机器类型的机器码(如377 #define MACH_TYPE_S3C2440 168 )修改内核机器码。流程如下:

内核:

$vim arch/arm/mach-s3c2440/mach-smdk2440.c

U-boot:

$vim include/asm-arm/mach-types.h

内核:

$vim arch/arm/tools/mach-types

六、编译镜像

$make zImage

 

七、板子烧写

使用DNW工具将内核镜像烧写至开发板中

 八、遇到的问题

问题:

  Kernel panic - not syncing: Attempted to kill init!

解决办法:

  $make menuconfig

选择以下两项:

 Kernel Features  --->

 [*] Use the ARM EABI to compile the kernel                               
 [*]   Allow old ABI binaries to run with this kernel (EXPERIMENTAL)

九、NandFlash驱动移植

linux里面已经包含NandFlash驱动,只需对源码进行修改即可。

1、$vim arch/arm/plat-s3c24xx/common-smdk.c

107 /* NAND parititon from 2.4.18-swl5 */
108
109 static struct mtd_partition smdk_default_nand_part[] = {
110 #if defined(CONFIG_San_64MB_NAND )
111         [0] = {
112                 .name   = "San_Board_uboot",
113                 .size   = 0x00040000,
114                 .offset = 0x00000000,
115         },
116         [1] = {
117                 .name   = "San_Board_kernel",
118                 .offset = 0x00200000,
119                 .size   = 0x00200000,
120         },
121         [2] = {
122                 .name   = "San_Board_yaffs2",
123                 .offset = 0x00400000,
124                 .size   = 0x03BF8000,
125         }
126 #elif defined(CONFIG_San_128MB_NAND)
127         [0]={
128                 .name   ="San_Board_uboot",
129                 .offset =0x00000000,
130                 .size   =0x00040000,
131         },
132         [1]={
133                 .name   ="San_Board_kernel",
134                 .offset =0x00200000,
135                 .size   =0x00200000,
136         },
137         [2]={
138                 .name   ="San_Board_yaffs2"
139                 .offset =0x00400000,
140                 .size   =0x07BA0000,
141         }
142 #elif defined(CONFIG_ San_more_than_256MB_NAND)

143         [0]={
144                 .name   ="San_Board_uboot",
145                 .offset =0x00000000,
146                 .size   =0x00040000,
147          },
148          [1]={
149                  .name   ="San_Board_kernel",
150                  .offset =0x00200000,
151                  .size   =0x00200000,
152          },
153          [2]={
154                  .name   ="San_Board_yaffs2",
155                  .offset =0x00400000,
156                  .size   =0x0FB80000,
157          }
158 #endif
159 };

2、$vimdrivers/mtd/nand/Kconfig

166 choice
167         prompt "Nand Flash Capacity select"
168         depends on MTD
169         help
170           SanBoard Nand Flash Capacity select
171
172 config San_64MB_NAND
173         boolean "64MB Nand for SanBoard"
174         depends on MTD
175         help
176           Set 64MB Nand parts
177
178 config San_128MB_NAND
179         boolean "128MB Nand for SanBoard"
180         depends on MTD
181         help
182           Set 128MB Nand parts
183
184 config San_more_than_256MB_NAND
185         boolean "256MB~1GB Nand for SanBoard"
186         depends on MTD
187         help
188           Set 256MB~1GB Nand parts
189
190 endchoice

注:如果在make menuconfig中选中San_64MB_NAND,则在.config表现形式如下:

CONFIG_San_64MB_NAND=y

这实际是给C源文件提供预编译变量,如#if defined(CONFIG_San_64MB_NAND).......

这个过程就是实现了内核的定制,比如新增Nand驱动、或者去除wireless驱动。。。

十、移植yaffs2文件系统

1、获取yaffs2源码

http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi/

2、在内核中添加对yaffs2的支持

在刚下载的yaffs2源码中,执行:

./patch-ker.sh c ../linux-2.6.30.4

此时在内核fs目录下,新增“yaffs2”目录,同时fs/目录下面的Makefile文件和Kconfig文件也添加了yaffs2的配置和编译条件。

3、在配置单中添加对yaffs2的支持


$make menuconfig

File systems  --->

                [*] Miscellaneous filesystems  --->

                                     <*>   YAFFS2 file system support

注意:假如在内核中没有添加对yaffs2的支持,则出现找不到或者挂载文件系统是失败的提示:

List of all partitions:
0100       4096 ram0 (driver?)
0101       4096 ram1 (driver?)
0102       4096 ram2 (driver?)
0103       4096 ram3 (driver?)
0104       4096 ram4 (driver?)
0105       4096 ram5 (driver?)
0106       4096 ram6 (driver?)
0107       4096 ram7 (driver?)
0108       4096 ram8 (driver?)
0109       4096 ram9 (driver?)
010a       4096 ram10 (driver?)
010b       4096 ram11 (driver?)
010c       4096 ram12 (driver?)
010d       4096 ram13 (driver?)
010e       4096 ram14 (driver?)
010f       4096 ram15 (driver?)
1f00        256 mtdblock0 (driver?)
1f01       2048 mtdblock1 (driver?)
1f02      63168 mtdblock2 (driver?)
No filesystem could mount root, tried:  ext3 ext2 cramfs msdos vfat romfs
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,2)

4、yaffs2移植完成,重新编译内核

十一、在内核中添加tmpfs支持

如果不添加tmpfs支持,那么将会出现那/tmp挂载失败的提示。关于tmpfs的作用待研究。

mount: mounting tmpfs on /tmp failed: Invalid argume

文件系统配置:

[root@san /]#cat /etc/fstab
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
var /dev tmpfs defaults 0 0

File systems  --->

                      Pseudo filesystems  --->

                                      [*] Virtual memory file system support (former shm fs)

                                      [*]   Tmpfs POSIX Access Control Lists

Linux-2.6.30.4在2440上的移植之MMC/SD卡驱动 嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。 一、移植环境 · 主  机:VMWare--Fedora 9  · 开发板:Mini2440--64MB Nand  · 编译器:arm-linux-gcc-4.3.2 二、移植步骤 1. 添加SD卡设备到系统设备初始化 阅读详情

相关推荐

Zotero插件安装保姆级教程:从Jasminum到Sci-Hub,一站式搞定文献管理

本文提供Zotero插件安装的保姆级教程,从Jasminum到Sci-Hub,一站式搞定文献管理。通过详细配置和实战案例,帮助用户高效构建文献工作流,提升研究效率。重点介绍了元数据抓取、PDF管理、文献分析和知识产出等关键插件的使用方法。

weixin_42531516的博客 171

linux&arm内核移植问题

启动信息如下: List of all partitions: 1f00       1024 mtdblock0 (driver?) 1f01       3840 mtdblock1 (driver?) 1f02       3072 mtdblock2 (driv

menghui8592的专栏 692

头歌OpenGauss数据库 - 单表查询 答案

本关任务:用SELECT语句检索数据表中指定字段的数据;用SELECT语句检索数据表中所有字段的数据。为了完成本关任务,你需要掌握: 1.如何获取数据表中指定字段的数据;2.如何获取数据表中的所有数据。

d214493517的博客 5720

linux-2.6.30.4移植至2440开发板

linux-2.6.30.4移植至2440开发板经验谈 一、下载linux-2.6.30.4源码,并解压 ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.30.4.tar.gz tar zxvf linux-2.6.30.4.tar.gz 二、在系统中添加对ARM的支持 $vim Makefile 193#ARCH ?= $(SUBA...

系统运维 265

STM32F103用软件I2C读取IP2366电量数据,实测避坑指南(附完整源码)

本文详细介绍了如何使用STM32F103的软件I2C驱动读取IP2366电池管理芯片的电量数据,包括GPIO初始化、I2C时序实现、关键延时优化及常见问题解决方案。通过实测避坑指南和完整源码,帮助开发者快速实现稳定的电量数据读取,适用于嵌入式电池管理系统开发。

weixin_33725722的博客 514

ESP32-P4开发板实战:从零配置VSCode环境到点亮MIPI-DSI屏幕(避坑指南)

本文详细介绍了ESP32-P4开发板在VSCode环境下的配置流程,包括SDK安装、idf_component.yml依赖管理,以及MIPI-DSI屏幕驱动的实现方法。通过实战指南帮助开发者避开常见配置陷阱,快速完成从环境搭建到屏幕点亮的全流程,适用于物联网和嵌入式开发场景。

pp12345的博客 742

NFS挂载根文件系统失败

[ 111.847661] VFS: Unable to mount root fs via NFS, trying floppy. [ 111.860722] VFS: Cannot open root device "nfs" or unknown-block(2,0): error -6 [ 111.866710] Please append a correct "root=" boot option; here are the available partitions: [ 111.8751

weixin_43937576的博客 910

30天入门 SAP BTP 开发系列之七:动手在 SAP BTP 上开发第一个 ABAP 程序

本教程从理论转向实践,指导如何在SAP BTP上创建首个ABAP程序。首先通过Booster向导在Trial账号中配置ABAP环境,需确保已启用Cloud Foundry并创建Space。成功创建ABAP实例后,使用ABAP Development Tool连接环境:下载服务密钥文件,导入工具获取连接URL,即可建立项目开始编码。教程提供了从环境搭建到开发工具配置的完整流程,帮助ABAP开发者快速上手BTP云开发。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1680

移植u-boot支持ubi遇到的问题总结

============================================ 作者:yuanlulu http://blog.csdn.net/yuanlulu 版权没有,但是转载请保留此段声明 ============================================ 自己最近在移植u-boot.201006到smartarm3250,后来又增加了ub

yuanlulu的博客 1万+

063、推挽变换器的磁偏问题与解决

本文针对推挽变换器中的磁偏问题展开分析。作者通过实际案例指出,磁偏主要由开关管导通压降差异和驱动信号不对称引起,会导致变压器饱和、MOS管炸毁等问题。文章提供了四种解决方案:采用电流模式控制、添加隔直电容、优化对称驱动设计以及引入磁芯气隙(作为最后手段)。调试时应重点观察原边电流波形对称性、变压器声音和直流分量。作者强调实践经验的重要性,建议预留隔直电容位置,并指出推挽拓扑在500W以上功率场合的局限性。这些基于实战的经验总结为电源工程师提供了有价值的参考。

Jack010169的博客 312

深度学习之目标检测--Pytorch实战

只需要能看懂python代码,就能最快入门深度学习---目标检测。目标检测简单的玩玩儿还行,模型调优,调参,还需要一定的数学功底。通过代码来实现卷积,池化,非线性激活,正则化,归一化,能让人减少对大量数学公式的敬畏,手写神经网络也是考研复试中上机考试的压轴题,掌握搭建神经网络和如何训练模型是需要掌握的基础的

需要远程指导仿真实验、代码有问题的,请后台私信或者关注公众号 1万+

移植Linux 3.4.2内核到JZ2440开发板(超精讲)

Linux 3.4.2内核移植到JZ2440开发板 0、开发环境 虚拟机:VMware workstation 16 pro 宿主机操作系统:Ubuntu 16.04 开发板:JZ2440 移植内核版本:Linux 3.4.2 1、内核下载及内核启动流程简述 1.1 点击上述链接,找到需要得内核版本(此文使用Linux3.4.2) 点击Linux内核下载地址获取内核源码 获取后放到Linux系统上解压:tar -jxf linux-3.4.2.tar.bz2 Linux内核有3万多个文件,可以

Leon的博客 2989

Python画柱状图(双柱状图,三柱状图)且显示对应数值

使用python实现双柱状图和三柱状图,并且在柱状图形的顶部显示对应数值;

yue200403的博客 1万+

Q2440开发板系列教程合集-含有 Linux-2.6.30.4内核移植pdf文档

http://bbs.embedsky.net/viewthread.php?tid=630&extra=page%3D1http://bbs.embedsky.net/index.phphttp://blog.chinaunix.net/u1/38994/article_56615_5.html 首先推出的是Linux移植教程(现在是4.2版,直接更新Linux内核到2.6.30

虚拟化开发 2030

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Linux-2.6.30.4在2440上的移植之RTC时钟驱动

Linux-2.6.30.4在2440上的移植之RTC时钟驱动 一、移植环境 · 主 机:VMWare--Fedora 9 · 开发板:Mini2440--64MB Nand · 编译器:arm-linux-gcc-4.3.2 二、移植步骤 1. 查看没有添加对RTC时钟支持的系统。从系统启动信息可以看出RTC设备不能正常打开,系统启动后运行#date命令显示的

fgq1990的专栏 762

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

linux内核移植jz2440,移植新内核4.15.6到JZ2440开发板

近来无事就想着动手移植新的内核在JZ2440开发板上跑起来,https://www.kernel.org/ 下载kernel linux-4.15.6.tar.xd,执行xz -d linux-4.15.6.tar.xztar -xvf linux-4.15.6.tar进行解压操作,就可以进行移植操作了。1.修改Makefile文件:-ARCH ?= $(SUBARCH)-CR...

weixin_42299888的博客 470

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

mini2440的 linux内核移植

mini2440的Linux内核移植 参考网上的资料将linux-2.6.30.5的内核移植到了mini2440开发板,现把移植过程整理下来备忘。 电脑主机系统:Ubuntu 9.04 mini2440开发板bootloader:supervivi 交叉编译器使用友善之臂提供的符合EABI标准的交叉编译器 arm-linux-gcc-4.3.2

好行者 3460

移植 linux-2.6.32.2 到 mini2440

作为一个嵌入式专业的学生,想想自己都大四了,还在搞这些基础东西,真丢人………… 先介绍一下此次移植的主要目标对象: 平台:window 7 旗舰版 and Fedora 9 目标板:mini2440 目标系统: linux-2.6.32.2 交叉编译链: arm-liu

AK_winson08的专栏 2330

基于TQ2440的linux-2.6.30.4内核移植(笔记)

移植环境 CPU:S3C2440 交叉编译器:arm-linux-gcc-4.3.3 虚拟机系统:Ubuntu12.04 移植步骤 1、获取内核源码 网址:http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/ 找到linux-2.6.30.4压缩包下载即可,然后拷贝到虚拟机中解压 2、在系统中添加对ARM的支持 进入内核源码根目...

阿乐的博客 414

linux2.6.30.4移植到TQ2440

http://blog.chinaunix.net/uid-28194872-id-3358090.html   修改根目录下的Makefile文件 命令:gedit Makefile大概193行和194行 修改: ARCH=arm CROSS_COMPILE=arm-linux- 原因:指明体系结构为arm,采用的交叉编译器为arm-linux-,这一步一定要改完再执

阿鲁的嵌入式之路 1423

linux-2.6.30.4在mini2440开发板的移植

Linux版本:linux-2.6.30.4 交叉编译器:3.4.5 开发板:友善之臂mini2440 开发板配置:SoC s3c2440 、网卡 DM9000 、 Nor Flash AM29LV160DB (2M) 、NAND FLash (256M) 、SDRAM (64M) uboot版本:u-boot-1.1.6 一、准备工作 根文件系统,本次移植根文件系统已放置在服务器上,采用NFS...

fhkj5769的博客 291

linux-2.6.38.2移植到mini2440开发板上

linux-2.6.38.2移植到mini2440开发板上

wuhuiskt的博客 464

基于飞凌2440开发板的linux-2.6.28移植过程

基于飞凌2440开发板的linux-2.6.28移植过程如发现BUG欢迎发帖指正宿主机:REDHAT 9.0 gcc-3.4.1目标机:s3c2440交叉编译器:arm-linux-gcc-3.4.1要移植的内核版本:linux-2.6.28.7文件系统: cramfs准备知识:Linux支持多种平台架构。在其源码的arch目录下,已经将各种支持的平台架构的源码分门别类

lescy的专栏 1273
上一篇: vmware 下linux上网设置
下一篇: 图标问题:killall bonobo-activation-server
vcvbve
博客等级 码龄17年 5粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值