http://blog.csdn.net/wang_shuai_ww/article/details/19678989这篇文章已经介绍了正常引导linux的方法,但只是能够引导,并不能进入控制台,本篇将会介绍怎么进入控制台。

首先要明确要进入控制台要做什么事。在上篇基础上,再增加DM9000的支持和NFS的支持即可进入梦寐以求的控制台了。

下面先从增加DM9000的支持介绍。

由于3.10.30版本内核已经有对DM9000支持,所以稍作修改即可完成移植。

修改结构体smdkv210_dm9000_resources 和函数 smdkv210_dm9000_init(),修改成如下所示即可。

static struct resource smdkv210_dm9000_resources[] = { [0] = { .start = 0x88000000,.end = 0x88000000 + 3,.flags = IORESOURCE_MEM,},  [1] = { .start = 0x88000000 + 4,.end = 0x88000000 + 4 + 3,.flags = IORESOURCE_MEM,},  [2] = { .start = IRQ_EINT(9),.end = IRQ_EINT(9),.flags = IORESOURCE_IRQ|IORESOURCE_IRQ_HIGHLEVEL,}
};

这里使用中断线9,可在原理图查得。

static void __init smdkv210_dm9000_init(void)
{unsigned long* srom_bw = ioremap(0xE8000000, 4); unsigned long* srom_bc1 = ioremap(0xE8000004, 4); *srom_bc1 = ((0<<28)|(0<<24)|(5<<16)|(0<<12)|(0<<8)|(0<<4)|(0<<0));*srom_bw &= ~(0xf << 4); *srom_bw |= (1<<4)|(1<<5);gpio_request(S5PV210_MP01(1), "nCS1");s3c_gpio_cfgpin(S5PV210_MP01(1), S3C_GPIO_SFN(2));gpio_free(S5PV210_MP01(1));iounmap(srom_bw);iounmap(srom_bc1);
}

然后编译内核即可。

内核完成后还需要对u-boot进行设置才行,也就是对linux内核传递参数的设置。

setenv bootargs noinitrd root=/dev/nfs console=ttySAC2,115200 init=/linuxrc nfsroot=192.168.1.22:/nfsboot/my_system/rootfs/ rw ip=192.168.1.21:192.168.1.22:192.168.1.1:255.255.255.0::eth0:on

如果内核也使用挂载方式,那么还可以设置内核以tftp方式加载到内存。

setenv bootcmd "tftp 30008000 /210_old/uImage;bootm 30008000"

设置完上面的环境变量后saveenv保存环境变量即可。

内核和u-boot都完成后下面就是制作根文件系统了。这个网上有很多,这里我再在后面说说自己的一些见解。

首先要创建目录,使用下面的脚本即可:

#!/bin/sh
echo "------Create rootfs directons start...--------"
mkdir rootfs
cd rootfs
echo "--------Create root,dev....----------"
mkdir root dev etc boot tmp var sys proc lib mnt home usr
mkdir etc/init.d etc/rc.d etc/sysconfig
mkdir usr/sbin usr/bin usr/lib usr/modules
echo "make node in dev/console dev/null"
sudo mknod -m 600 dev/console c 5 1
sudo mknod -m 600 dev/null  c 1 3
mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp
mkdir var/lib var/lock var/run var/tmp
chmod 1777 tmp
chmod 1777 var/tmp
echo "-------make direction done---------"

目录建立完后可以编译busybox了,我使用的版本是busybox-1.22.0,可以去官网下载。

然后解压,进入busybox-1.22.0目录,打开makefile修改CROSS_COMPILE和ARCH,如下:

CROSS_COMPILE ?= arm-linux-

ARCH ?= arm

使用make xconfig或者make menuconfig进行配置

红圈部分可选可不选。

红圈部分还是选上吧,防止覆盖宿主机的这个目录。

下图中的红色部分修改成前面使用脚本生成rootfs的绝对路径即可。

其他默认,编译即可。

使用的编译命令为make install,执行完成后会在rootfs目下有个linuxrc文件。

这时文件系统还是不可用的,还需要添加一些文件。

在etc目录下创建Inittab文件,内容如下

::sysinit:/etc/init.d/rcS
console::askfirst:-/bin/sh
::restart:/sbin/init
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a

在etc/init.d/目录下创建rcS文件,内容如下

echo "----------mount all.........."
mount -a
echo "----------Starting mdev......"
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
/bin/hostname -F /etc/sysconfig/HOSTNAME

为inittab和rcS文件添加可执行权限

chmod a+x inittab
chmod a+x rcS

在etc目录下创建fstab文件,内容如下

#evice mount-point type       option       dump   fsck   order
proc /proc proc defaults 0 0
none /tmp ramfs defaults 0 0
mdev /dev ramfs defaults 0 0
sysfs /sys sysfs defaults 0 0

在etc目录下创建profile文件,内容如下

PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH
#set hostname
HOSTNAME='/bin/hostname'
export HOSTNAME
# Set PS1
PS1='[\u@\h \W]\$'
export PS1

在etc/sysconfig目录下创建HOSTNAME文件,在文件中写入主机名,我这里写的是real210。

另外还需要一些库文件,这里可以使用arm-linux-编译器的库。为了方便,也正对我的开发板,我直接把开发板配套的库文件拷贝到了刚才建立的文件系统中,主要是lib目录和usr/lib目录下的库文件。

到这里就完成了,启动系统看看运行界面吧:

网上有人把linux内核也安装了,我这里没有安装,也是可以运行的,安装linux后打包的话会非常大,所以我没有安装linux内核,以后需要再说吧。

如果大神了解这个情况的留下言哈,再次谢过了。

real210移植记录-u-boot2013.10引导linux3.10.30进入控制台相关推荐

  1. u-boot2013.10引导linux3.10.30记录

    首先确定real210.h头文件的配置是否正确,我的完整配置如下: /** (C) Copyright 2009 Samsung Electronics* Minkyu Kang <mk7.ka ...

  2. real210移植记录-支持eMMC,增加菜单操作

    本次记录的移植是使该u-boot支持eMMC,开发板为real210最新版的开发板,标配eMMC 8GB flash,之前的移植都是在之前的210硬件上进行的核心板版本为v2,flash为nand 5 ...

  3. u-boot移植到mini2440,u-boot版本2008.10

    这篇文章写于2008.12.28日,主要记录了我移植u-boot-2008.10的过程,并附上了移植好的patch文件.移植好的u-boot-2008.10适用友善公司的mini2440和阳初公司的y ...

  4. android touch screen keyboard input移植记录

    android touch screen keyboard input移植记录  仅仅是作为记录: Andorid 的 touchscreen 事件必须要有  BTN_TOUCH 才可以. 所以初始化 ...

  5. 安卓平台下的GPS架构介绍及驱动移植记录

    一.前言 我的工作是关于汽车车机BSP部分. 汽车车机,其实基本和人们日常所用的手机一样,也是安卓平台的.所谓安卓,就是一层安卓服务包裹着Linux内核所形成的操作系统. BSP组,主要工作内容就是负 ...

  6. 基于Android8.1的博通bcm89342蓝牙驱动的驱动移植记录

    基于Android8.1的博通蓝牙BCM89342的驱动移植记录 说明 一 .软硬件平台 二.蓝牙移植流程 2.1 kernel 对蓝牙的驱动支持配置 2.2 kernel层编写蓝牙电源管理(bt r ...

  7. ls2k1000在linux3.10内核下的中断分析

    目录 1 基本知识 1.1 ls2k1000的中断组成 1.2 GS264中断相关的寄存器 2 ls2K1000 在 linux3.10 内核下的中断初始化过程 2.1 大致过程 2.2 函数具体分析 ...

  8. 电子实验记录和纸质实验记录——怎么选,可以提高10倍效率

    上海鹰谷自2017年推出了电子试验记录本-InELN, 因其兼具管理和使用便利等优点和本土化的服务,得到用户的好评. 一款优秀产品的研发是没有终点的,鹰谷积极关注和持续倾听用户的意见,不断提升产品体验 ...

  9. mjpg-streamer移植记录

    一.基于ubuntu18.04系统的mjpg-streamer移植记录 1.移植之前使用ubuntu的软件测试USB摄像头是否正常工作 (1).插上摄像头之后,ubuntu右下角有摄像头图标 (2). ...

最新文章

  1. 史上最萌的统计学入门书,快来看看长啥样
  2. python之拆包与装包
  3. python多个线程join_python-使用`thread.join()`时多线程冻结
  4. listview条目用状态选择器没反应
  5. 学习笔记(一)——图像的灰度级和动态范围
  6. 工作260:js判断一个数组是否包含一个指定的值
  7. 陌屿授权系统V2.0全解
  8. Linux平台提取DSDT,手动提取DSDT和SSDT教程
  9. Linux学习笔记:GDB常用命令
  10. 微波工程(3)——网络
  11. 计算机系统 基础知识点汇总,超全!!!
  12. 手把手教你破解无线路由器密码
  13. 0-50A集成式霍尔电流传感器应用案例分享
  14. nodejs轻量型个人文档管理系统
  15. 面试官的技术面试技巧与步骤
  16. nacos怎么修改服务分组_【Java】nacos服务注册如何配置分组?
  17. [记录]手机数据恢复
  18. 悲观锁和乐观锁的理解以及实现方式-学习笔记
  19. TT语音不灵了,母公司趣丸半年巨亏近10亿,押注电竞能否助推IPO?
  20. c语言100以内分解质因数,用C语言实现,将100以内的自然数分解质因数

热门文章

  1. echarts词云图形状_用Python 3.8绘制词云图就这么20行代码
  2. android流程化步骤样式,Android RecyclerView 解析之绘制流程篇
  3. html 复制文本按钮,js实现点击按钮复制文本功能
  4. oracle查找异常中断的sqlid方法,Oracle查找锁定对象以及强制解除锁定的方法
  5. 均方误差越大越好_超详细 | 如何写好计量经济学实证分析论文?
  6. linux ftp dns,Ubuntu下FTP与DNS服务器搭建教程PDF
  7. yota3墨水屏设置_【YotaPhoneYOTA3评测】外观:没有全面屏但有墨水屏_YotaPhone YOTA 3_手机评测-中关村在线...
  8. mysql 实时备份_MySQL实现实时备份[转]
  9. sudo: apt-get:找不到命令_Linux重复执行历史命令方法详解
  10. 使用sed修改最后一行数据