基于友善的superboot 移植linux内核到tiny210(s5pv210)上
友善提供的开发板光盘里已经提供了友善官方移植的内核,但是为了自己的开发方便,并且防止受到友善的干扰,移植一个基于友善的super boot的内核。
super-boot(友善官方提供)
内核(3.4.2)
根文件系统nfs(韦老师提供,网上很多)
1. super-boot 参数配置
友善的super-boot是不开源的,但是我们可以修改其提供的参数bootargs来修改启动命令:
修改命令如下:
################### Linux ####################
Linux-BootLoader = Superboot210.bin
Linux-Kernel = Linux/zImage
#Linux-CommandLine = root=/dev/mtdblock4 rootfstype=yaffs2 console=ttySAC0,115200 init=/linuxrc skipcali=yes ctp=3
Linux-CommandLine = console=ttySAC0,115200 root=/dev/nfs nfsroot=192.168.1.5:/home/book/Codes/fs_mini_mdev_new ip=192.168.1.230:192.168.1.5:192.168.1.5:255.255.255.0:linux.arm9.net:eth0:off skipcali=yes ctp=3
#Linux-RootFs-InstallImage = Linux/rootfs_qtopia_qt4-mlc2.img
其中# 是注释符号 ,这里的参数配置时一定要细心。
2. 移植新版本的内核。
从kernel org 中下载下来最新的内核:
2.1. 解压下来后修改根目录下的Makefile :
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
2.2.修改配置,使用和tiny210最相似的开发板配置.执行如下命令:
make s5pv210_defconfig
2.3. 执行make 命令生成zImage
make
这里用于生成对应superboot的镜像,因此必须生成zImage
2.4. 修改内核串口配置
经过上面三步的命令后,就可以烧写和启动kernel了,但是此时终端上除了打印loading kernel之外就再无打印信息了,原因是kernel默认的串口是串口1,需要将
其改为串口0,执行make menuconfig,修改串口配置:
system type
(0) S3C UART to use for low-level messages
编辑此项为0 ,此时重新烧写zImage ,就能看到终端输出了。
2.5. 修改机器码
经过上面的步骤之后,终端会有输出,但是输出的信息会提示你机器码不正确。
superboot在启动内核时一开始会比较superboot中的机器码和内核提供的机器码是否匹配。显然这里内核的机器码和superboot中并不匹配
修改:内核支持的机器码:
由于superboot不开源,所以只能修改内核中的机器码:
打开include/generated/mach-types.h文件: 修改:
//#define MACH_TYPE_SMDKV210 2456
#define MACH_TYPE_SMDKV210 3466
重新编译烧写,此时就能kernel就能正常跑下去了。
2.6 移植dm9000网卡驱动程序。
网卡驱动程序的移植其实很简单,由于其接口是内存型接口,一般只要修改其中断引脚号和内存片地址就行。
参考友善提供的mach-mini210.c修改:
arch\arm\mach-s5pv210\Mach-smdkv210.c
#define S5PV210_PA_DM9000_A (0x88001000)
#define S5PV210_PA_DM9000_F (S5PV210_PA_DM9000_A + 0x300C)
static struct resource smdkv210_dm9000_resources[] = {
[0] = {
.start = S5PV210_PA_DM9000_A,// 片选地址
.end = S5PV210_PA_DM9000_A + SZ_1K*4 - 1,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = S5PV210_PA_DM9000_F,
.end = S5PV210_PA_DM9000_F + SZ_1K*4 - 1,
.flags = IORESOURCE_MEM,
},
[2] = {
.start = IRQ_EINT(7), // 中断号
.end = IRQ_EINT(7),
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
},
};
static struct dm9000_plat_data smdkv210_dm9000_platdata = {
.flags = DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM,
.dev_addr = { 0x08, 0x90, 0x00, 0xa0, 0x02, 0x10 },
};
static struct platform_device smdkv210_dm9000 = {
.name = "dm9000",
.id = -1,
.num_resources = ARRAY_SIZE(smdkv210_dm9000_resources),
.resource = smdkv210_dm9000_resources,
.dev = {
.platform_data = &smdkv210_dm9000_platdata,
},
};
static void __init smdkv210_dm9000_init(void)
{
unsigned int tmp;
gpio_request(S5PV210_MP01(1), "nCS1"); // 这里需要修改
s3c_gpio_cfgpin(S5PV210_MP01(1), S3C_GPIO_SFN(2));
gpio_free(S5PV210_MP01(1));
tmp = (5 << S5P_SROM_BCX__TACC__SHIFT);
__raw_writel(tmp, S5P_SROM_BC1);
tmp = __raw_readl(S5P_SROM_BW);
tmp &= (S5P_SROM_BW__CS_MASK << S5P_SROM_BW__NCS5__SHIFT);
tmp |= (1 << S5P_SROM_BW__NCS1__SHIFT);
__raw_writel(tmp, S5P_SROM_BW);
}
这里附上原理图: 作为参照:
移植好网卡驱动程序,并且创建好你的根文件系统就能正常启动了。
3 移植网络文件系统
这部分网上资料很多,我直接拿的韦东山老师移植好的文件系统或者您也可以使用友善提供的qt的文件系统都是可以的。
基于友善的superboot 移植linux内核到tiny210(s5pv210)上相关推荐
- Linux内核移植漫谈——你不是第一个想移植Linux内核的人
Jack:在读大学的时候我想过移植Linux操作系统. 我:现在呢? Jack:我还是想移植Linux操作系统.你教我移植吧. 我:你知道什么是"Linux内核移植"吗? Jack ...
- linux内核移植开发板,mini2440学习之(一)-------移植linux内核
请 登录 后使用快捷导航 没有帐号?注册 阅 4622|回 2 最后登录2013-8-22 在线时间22 小时 威望2878分 芯积分608分(兑换) E金币好友 发表于2009-9-22 15:02 ...
- 为AM335x移植Linux内核主线代码——了解dts
问题一:以前的Linux Kernel如何描述硬件,现在又如何描述呢? 在以前的内核版本中: 1)内核包含了对硬件的全部描述: 2)bootloader会加载一个二进制的内核镜像,并执行它,比如uIm ...
- 第二部分 s3c2440 移植linux内核 添加网卡支持 yaffs2文件系统支持
三.内核的移植 说明:针对的是百问网的jz2440 gcc:4.9.1 1.移植内核 首先,下载源码包:https://www.kernel.org/ 现在时间为2014年12月20日其主界面截图为: ...
- mini2440移植linux内核,mini2440的 linux内核移植
mini2440的linux内核移植 电脑主机系统:Ubuntu 9.04 mini2440开发板bootloader:supervivi 交叉编译器使用友善之臂提供的符合EABI标准的交叉编译器ar ...
- 开源项目-基于Intel VT技术的Linux内核调试器
本开源项目将硬件虚拟化技术应用在内核调试器上,使内核调试器成为VMM,将操作系统置于虚拟机中运行,即操作系统成为GuestOS,以这样的一种形式进行调试,最主要的好处就是调试器对操作系统完全透明.如下 ...
- 移植linux内核-映像文件,移植Linux内核-映像文件
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://tigerwang202.blogbus.com/logs/43927976.html 首先从Blackfin uCli ...
- delphi 调用浏览器内核_HFL:基于混合模糊测试的Linux内核漏洞挖掘
Remarks Conference: NDSS 2020 Full Paper: HFL: Hybrid Fuzzing on the Linux Kernel Summary 针对的问题: Lin ...
- Linux 内核实验室 —— 基于 Docker/Qemu 的极速 Linux 内核学习、开发和测试环境
介绍: 项目简介 本项目致力于创建一个基于 Docker + QEMU 的 Linux 实验环境,方便大家学习.开发和测试 Linux 内核. Linux Lab 是一个开源软件,不提供任何保证,请自 ...
- linux 内核 网卡驱动 移植,Linux内核移植步骤_添加DM9000网卡驱动(设备树).docx
Linux内核移植步骤_添加DM9000网卡驱动(设备树) Linux内核移植步骤2015年05月13日星期三上午 11:05往设备树中添加网卡驱动:1.选平台,指定交叉编译工具链:(1).在Make ...
最新文章
- python后端工程师 数据爬虫
- dell服务器系统开机提示错误解决方法
- C语言再学习 -- Linux 中常用基本命令
- 容器日志管理 (2) 开源日志管理方案 ELK/EFK
- 专访OPPO Find X5产品经理:深耕自研芯片 以最高标准打造极致旗舰体验
- toad for mysql调试存储过程_【oracle】oracle 调试 存储过程
- 截取url的host_js如何准确获取当前页面url网址信息
- 高性能mysql 3 pdf下载_《高性能MySQL_第3版》PDF版本下载
- Codeforces 934D - A Determined Cleanup
- OpenLayers 3 入门教程
- 20210526一日总结
- Excel合并计算和分类汇总
- 直接最小二乘法拟合椭圆
- 形式逻辑(01)你的逻辑怎么样?
- 计算用户输入的日期离1900年1月1日相距多少天
- Eolink 携手云体科技 ,共同构建汽车 DevOps 新生态
- 苹果手机专用计算机,苹果手机的使用
- TED(指technology, entertainment, design在英语中的缩写,即技术、娱乐、设计)
- asp mysql 可编辑树状,基于数据库动态生成树形目录-ASP教程,数据库相关
- 电子元件符号及字母表示
热门文章
- 哈工大密码学实验CA
- rzsz工具 源码交叉编译
- sklearn学习笔记(3)svm多分类
- 增长量计算n+1原则_我是如何快速做资料分析的?(二)
- 红帽rhce考试自带补考吗_红帽RHCE认证考试注意事项
- python科学计算基础教程pdf下载-python科学计算 第二版
- 【预测模型】基于蝙蝠算法优化最小二乘支持向量机lssvm实现数据预测matlab代码
- 数据结构严蔚敏 栈基本操作 C语言实现
- CentOS 7之Systemd详解之服务单元设置system.service
- masm5安装教程_masm5 1、下载个masm5.0(简单 联合开发网 - pudn.com