创维 linux内核,Linux2.6内核在创维特jx2410平台上的移植一
我参考网上的资料做了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平台上的移植一相关推荐
- 创维 linux内核,Linux2.6内核在创维特jx2410平台上的移植四
Ne2000兼容的网卡移植 1.首先修改arch/arm文件夹下的Kconfig文件的ISA项如下: config ISA bool "gggggg ISA support" de ...
- 锐捷认证客户端在嵌入式linux平台上的移植
一.TCP/IP协议简介 IP协议用于将多个包交换网络连接起来,IP不提供可靠的传输服务,它不提供端到端的或(路由)结点到(路由)结点的确认,对数据没有差错控制,它只使用报头的校验码,它不提供重发和流 ...
- 在linux上装git教程,教你玩转Git-Linux 平台上安装
导读 Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件.Gi ...
- linux嵌入式开发arm7,基于ARM7系列芯片嵌入式平台上实现的设计方案-嵌入式系统-与非网...
本文介绍的方法是在用ARM7系列芯片S3C4510B和μClinux构建的嵌入式平台上实现的.在嵌入式系统设计过程中,系统的掉电保护越来越受到重视整个掉电保护实现的基本思路是:产生掉电信号,捕捉掉电信 ...
- window10 运行linux软件,现在你可以直接在Windows 10平台上运行带用户界面的Linux桌面软件...
微软目前正在继续更新 Windows 10 WSL 子系统功能 , 此次更新主要带来GPU硬件加速可让用户运行桌面软件. 以往我们要想运行Linux软件肯定得使用Linux操作系统,在 WSL 发布后 ...
- Linux驱动在arm运行,如何在嵌入式ARM-Linux平台上进行编译 配置和运行使用
这篇文章你将会看到嵌入式ARM-Linux上的常用应用程序wpa_supplicant(以及wpa_supplicant依赖的libnl和openssl)的编译.配置和运行使用,iw.hostapd等 ...
- 华硕打不开vm里面的Linux,华硕主板 Vmware虚拟机 二进制转换与此平台上的长模式不兼容...
出现情况如下: 大概遇到过两次这个问题,第一次是在笔记本VM上装虚拟机,第二次是在台式机VM上装虚拟机. 原因是因为虚拟化(Intel Virtualization Technology)技术,在主板 ...
- 宏内核与微内核、Linux内核与Unix内核的区别
宏内核:简单来说,就是把很多东西都集成进内核,例如linux内核,除了最基本的进程.线程管理.内存管理外,文件系统,驱动,网络协议等等都在内核里面.优点是效率高.缺点是稳定性差,开发过程中的bug经常 ...
- linux中initrd的含义,Linux2.6 内核的 Initrd 机制解析
1.什么是 Initrdinitrd 的英文含义是 boot loaderinitialized RAM disk,就是由 boot loader 初始化的内存盘.在 linux内核启动前, boot ...
最新文章
- 软件工程导论结对项目
- Android WebView使用与JavaScript使用
- Python高级运维开发2016年7月第14期隆重开课
- 【Flink】flink1.11报错No ExecutorFactory found to execute the application
- layui button按钮点击导致页面重新刷新的解决方案
- iOS开发 Xcode10报错缺少libstdc++.6.0.9.tbd
- c++ opencv图像中选择点显示点的坐标_如何使用OpenCV进行Delaunay三角剖分和Voronoi图...
- html5在线拍照,HTML5整合本地摄像头,实现视屏预览及拍照上传
- 利用色彩范围和钢笔工具抠图
- 【虚拟机】虚拟机vmware设置全屏(直接设置)
- 百度长期不收录网站怎么办?9个方法解决不收录
- BFM模型和Landmarks可视化
- 五子棋联机对战(JAVA实现)含源码
- python 爬去拉钩测试招聘信息
- CCR自动炒币机器人到底有多神奇,让无数炒币人疯狂追捧
- UVa10635 - Prince and Princess
- 云小课|MRS基础原理之MapReduce介绍
- hook(2)Activity启动流程,安卓开发实战
- 2019/12/25 学习总结(待填坑)
- 助力共享出行, 实现城市管理数字化和智能化
热门文章
- 【职坐标】java面向对象三大特征(一)——封装
- mac安装 facebook faiss
- QIIME2进阶三_用QIIME2实现对数据的质量控制
- Google C++编程风格整理(二)
- 大话设计模式之爱你一万年:第二十三章 行为模式:解释器模式:在也不用担心工资计算错误了:3.解释器模式之简单计算器3.0
- Android基础入门教程——8.3.5 Paint API之—— Xfermode与PorterDuff详解(二)
- Android图片预览框架PhotoViewer
- 分享一遍好文章--宁静以致远
- 『转』FFMPEG目前为止支持的所有格式列表
- MATLAB中判断矩阵是否存在负数及负数的个数