我参考网上的资料做了linux2.6.14内核的移植。创维特jx2410的配置:cpu:s3c2410, 32M Nor Flash(Intel 28F128), 64M SDRAM。Nor Flash启动。移植有很长一段时间了,以前不知道有blog这么个东西,做过的基本都丢了,现在只能回忆着写了(再不写估计就全忘光了)。Blog上记下自己做过的东西确实是个好主意,你说呢?我对blog的定位就是我的资料仓库。2.6的移植网上很火的,可是nor flash启动的比较少,希望它对你有用。

一、准备必要的文件

1.首先去官方网站下载最新的llinux内核

2.因为linux2.6.14内核需要更新版本的编译器,所以需要下载交叉编译器

ftp://ftp.handhelds.org/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2

二、安装文件

1、把gcc解压到/usr/local/arm/3.4.1目录下

2、接下来需要解压linux内核,输入命令:

# tar -jxvf linux-2.6.14.tar.bz2

将内核解压到linux-2.6.14目录下。

三、修改makefile文件

内核的编译是根据makefile文件的指示进行的,Makefile文件来组织内核的各模块之间的关系,记录了各个模块之间的相互联系和依赖关系。首先修改linux-2.6.14的根目录下的makfile文件,须改的主要内容是目标代码的类型和为编译内核指定一个编译器。注释掉以下内容:

#ARCH   ?= $(SUBARCH)

#CROSS_COMPILE      ?=

增加如下内容:

ARCH     : = arm

CROSS_COMPILE=/usr/local/arm/3.4.1/bin/arm-linux-

四、安装根文件系统

1.首先对flash进行分区。网上的经典文章《Linux 2.6.10 以后版本对S3C2410的支持》仅提到了对Nand flash分区的方法,对Nor flash不适用。对Nor flash的分区,是通过在linux/drivers/mtd/maps下增加特定mapping驱动程序来实现。该目录下的驱动程序结构相似,可以找一个来修改成自己的。我用的是cfi_flagadm.c这个。

cp cfi_flagadm.c s3c2410.c

将FLASH_PHYS_ADDR和FLASH_SIZE这两个宏分别修改成自己板子的flash起始地址和大小。然后修改结构体数组flagadm_parts添加自己的分区信息。

接下来告诉内核使用该驱动程序。修改maps目录下的Kconfig文件,该文件决定出现在menuconfig中的项目,在config MTD_CDB89712之后添加

config MTD_S3C2410

tristate "gggggg 2410 board"

修改该目录下的Makefile,添加如下内容:

obj-$(CONFIG_MTD_S3C2410)       += s3c2410.o

现在make menuconfig时,在MTD项目中将出现gggggg 2410 board选项,选中它并重新编译内核就完成了分区工作,启动时将看到分区信息。现在,内核可以检测到分区,并找到了压缩的RAMDISK,并试图解压缩。如果你使用smdk2410默认配置,这时会报错,类似RAMDISK:incomplete 云云。解决办法很简单,将内核配置中的BLK_DEV_RAM_SIZE的值从默认的4096改为8192即可。

2.在linux/arch/arm/mach-s3c2410/mach-smdk2410.c中添加ramdisk支持相关的代码。具体请参考我的文件贴图。

3.修改启动参数:

修改 linux/arch/arm/kernel/文件夹下的head.S文件如下:

ENTRY(stext)

/****************boot required ggggggg****************/

mov     r0,     #0

mov     r1,     #0xc1

ldr     r2,     =0x30000100

/*********************end****************************/

r0恒为0,r1为architecture ID。r2为启动地址。

五、支持启动时挂载devfs

为了我们的内核支持devfs以及在启动时并在/sbin/init运行之前能自动挂载/dev为devfs文件系统,修改fs/Kconfig文件

找到menu "Pseudo filesystems"

添加如下语句:

config DEVFS_FS

bool "/dev file system support (OBSOLETE)"

default y

config DEVFS_MOUNT

bool "Automatically mount at boot"

default y

depends on DEVFS_FS

六、配置内核产生.config文件

cp arch/arm/configs/smdk2410_defconfig .config

make menuconfig

在smdk2410_defconfig基础上,我所增删的内核配置项如下:

Loadable module support >

[*] Enable loadable module support

[*] Automatic kernel module loading

System Type >

[*] S3C2410 DMA support

Boot options >

Default kernel command string:

noinitrd root=/dev/mtdblock/2 init=/linuxrc console=ttySAC0,115200

#console=ttySAC0,115200使kernel启动期间的信息全部输出到串口#    # 0上.2.6内核对于串口的命名改为ttySAC0,但这不影响用户空间的串口编  #程。用户空间的串口编程针对的仍是/dev/ttyS0等

Floating point emulation >

[*] NWFPE math emulation

This is necessary to run most binaries!

#接下来要做的是对内核MTD子系统的设置

Device Drivers >

Memory Technology Devices (MTD) >

[*] MTD partitioning support

#支持MTD分区,这样我们在前面设置的分区才有意义

[*] Command line partition table parsing

#支持从命令行设置flash分区信息,灵活

RAM/ROM/Flash chip drivers >

Detect flash chips by Common Flash

Interface (CFI) probe

Detect nonCFI

AMD/JEDECcompatible

flash chips

Support for Intel/Sharp flash chips

Support for AMD/Fujitsu flash chips

Support for ROM chips in bus mapping

NAND Flash Device Drivers >

NAND Device Support

NAND Flash support for S3C2410/S3C2440 SoC

Character devices >

[*] Nonstandard

serial port support

[*] S3C2410 RTC Driver

#接下来做的是针对文件系统的设置,本人实验时目标板上要上的文件系统是ext2,故做如下配置

File systems >

Second extended fs support #ext2的支持

Pseudo filesystems >

[*] /proc file system support

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

[*] /dev file system support (OBSOLETE)

[*] Automatically mount at boot (NEW)

#这里会看到我们前先修改fs/Kconfig的成果,devfs已经被支持上了

Miscellaneous filesystems >

Compressed ROM file system support (cramfs)

#支持cramfs

Network File Systems >

NFS file system support

保存退出,产生.config文件.

.config文件能从提供的2.4.14.1的内核包中找到,文件名为config.back.

七、编译内核

make zImage

八、下载到开发板就可以启动了。

创维 linux内核,Linux2.6内核在创维特jx2410平台上的移植一相关推荐

  1. 创维 linux内核,Linux2.6内核在创维特jx2410平台上的移植四

    Ne2000兼容的网卡移植 1.首先修改arch/arm文件夹下的Kconfig文件的ISA项如下: config ISA bool "gggggg ISA support" de ...

  2. 锐捷认证客户端在嵌入式linux平台上的移植

    一.TCP/IP协议简介 IP协议用于将多个包交换网络连接起来,IP不提供可靠的传输服务,它不提供端到端的或(路由)结点到(路由)结点的确认,对数据没有差错控制,它只使用报头的校验码,它不提供重发和流 ...

  3. 在linux上装git教程,教你玩转Git-Linux 平台上安装

    导读 Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件.Gi ...

  4. linux嵌入式开发arm7,基于ARM7系列芯片嵌入式平台上实现的设计方案-嵌入式系统-与非网...

    本文介绍的方法是在用ARM7系列芯片S3C4510B和μClinux构建的嵌入式平台上实现的.在嵌入式系统设计过程中,系统的掉电保护越来越受到重视整个掉电保护实现的基本思路是:产生掉电信号,捕捉掉电信 ...

  5. window10 运行linux软件,现在你可以直接在Windows 10平台上运行带用户界面的Linux桌面软件...

    微软目前正在继续更新 Windows 10 WSL 子系统功能 , 此次更新主要带来GPU硬件加速可让用户运行桌面软件. 以往我们要想运行Linux软件肯定得使用Linux操作系统,在 WSL 发布后 ...

  6. Linux驱动在arm运行,如何在嵌入式ARM-Linux平台上进行编译 配置和运行使用

    这篇文章你将会看到嵌入式ARM-Linux上的常用应用程序wpa_supplicant(以及wpa_supplicant依赖的libnl和openssl)的编译.配置和运行使用,iw.hostapd等 ...

  7. 华硕打不开vm里面的Linux,华硕主板 Vmware虚拟机 二进制转换与此平台上的长模式不兼容...

    出现情况如下: 大概遇到过两次这个问题,第一次是在笔记本VM上装虚拟机,第二次是在台式机VM上装虚拟机. 原因是因为虚拟化(Intel Virtualization Technology)技术,在主板 ...

  8. 宏内核与微内核、Linux内核与Unix内核的区别

    宏内核:简单来说,就是把很多东西都集成进内核,例如linux内核,除了最基本的进程.线程管理.内存管理外,文件系统,驱动,网络协议等等都在内核里面.优点是效率高.缺点是稳定性差,开发过程中的bug经常 ...

  9. linux中initrd的含义,Linux2.6 内核的 Initrd 机制解析

    1.什么是 Initrdinitrd 的英文含义是 boot loaderinitialized RAM disk,就是由 boot loader 初始化的内存盘.在 linux内核启动前, boot ...

最新文章

  1. 软件工程导论结对项目
  2. Android WebView使用与JavaScript使用
  3. Python高级运维开发2016年7月第14期隆重开课
  4. 【Flink】flink1.11报错No ExecutorFactory found to execute the application
  5. layui button按钮点击导致页面重新刷新的解决方案
  6. iOS开发 Xcode10报错缺少libstdc++.6.0.9.tbd
  7. c++ opencv图像中选择点显示点的坐标_如何使用OpenCV进行Delaunay三角剖分和Voronoi图...
  8. html5在线拍照,HTML5整合本地摄像头,实现视屏预览及拍照上传
  9. 利用色彩范围和钢笔工具抠图
  10. 【虚拟机】虚拟机vmware设置全屏(直接设置)
  11. 百度长期不收录网站怎么办?9个方法解决不收录
  12. BFM模型和Landmarks可视化
  13. 五子棋联机对战(JAVA实现)含源码
  14. python 爬去拉钩测试招聘信息
  15. CCR自动炒币机器人到底有多神奇,让无数炒币人疯狂追捧
  16. UVa10635 - Prince and Princess
  17. 云小课|MRS基础原理之MapReduce介绍
  18. hook(2)Activity启动流程,安卓开发实战
  19. 2019/12/25 学习总结(待填坑)
  20. 助力共享出行, 实现城市管理数字化和智能化

热门文章

  1. 【职坐标】java面向对象三大特征(一)——封装
  2. mac安装 facebook faiss
  3. QIIME2进阶三_用QIIME2实现对数据的质量控制
  4. Google C++编程风格整理(二)
  5. 大话设计模式之爱你一万年:第二十三章 行为模式:解释器模式:在也不用担心工资计算错误了:3.解释器模式之简单计算器3.0
  6. Android基础入门教程——8.3.5 Paint API之—— Xfermode与PorterDuff详解(二)
  7. Android图片预览框架PhotoViewer
  8. 分享一遍好文章--宁静以致远
  9. 『转』FFMPEG目前为止支持的所有格式列表
  10. MATLAB中判断矩阵是否存在负数及负数的个数