给fs4412移植内核
Kernel(内核)是操作系统的核心组件,它负责管理计算机硬件和软件资源,提供对底层硬件的访问和控制,以及为应用程序提供运行环境。内核是操作系统的最底层,负责处理系统的各种任务和功能,包括进程管理、内存管理、文件系统管理、设备驱动程序等。内核与用户空间相对,用户空间是操作系统中运行应用程序的部分,而内核运行在特权模式下,具有更高的权限和访问硬件资源的能力。
1.获取源码:Linux 3.14
2.芯片是否支持(linux 3.14/arch/arm/configs/查找是否有相关芯片)
exynos_defconfig(提前配置了芯片相关的驱动和逻辑,SOC相关的基础设备的驱动和逻辑“内存,中断,IO设备”,kernel逻辑“文件管理、进程管理、内存管理”)
3.板子是否支持(linux 3.14/arch/arm/boot/dts/查找是否有相关板子)
《制作uImage》
4.
vi Makefile
{
ARCH ?= arm
CROSS_C = arm-linux-
}
make exynos_defconfig
sudo apt-get install libncurses5-dev
sudo apt-get install uboot-mkimage
sudo apt-get install u-boot-tools
5.make menuconfig (图像界面) //内核功能的增减
(2)S3C UART to use
6.make uImage -j8
《制作exynos4412-fs4412.dts》
7.设备+驱动 才能使用功能
vi arch/arm/boot/dts/Makefile 添加fs4412设备树文件,添加fs4412板子(因为板子上的设备“内存、串口、网卡、ADC”不一定被SOC全部初始化:比如ADC和网卡,只能在make menuconfig去勾选)
板子的设备告知系统: cp exynos4412-origen.dts exynos4412-fs4412.dts (复制设备树)
make dtbs
板子无法在服务器上下载东西怎么办?
cd arch/arm/boot/dts/exynos4412-fs4412.dts
find ./ | grep -IR dm9000----------->查找拥有dm9000的板子
gedit xxxx----------->然后复制dm9000设备
在exynos4412-fs4412.dts中的添加设备要在最后添加
修改网络设备
添加中断头文件
make menuconfig中 添加驱动 device----> “/dm9000” --->
make uImage
make dtbs
然后添加uImage和dtb文件到mytftp重新烧录到板子上
配置客户端的网卡IP:
+++++++make menuconfig中开启自动配置IP功能++++++++++++
告诉kernel,系统IP是多少:set bootargs root=/dev/ram rw console=ttySAC2,115200 clk_ignore_unused init=/linuxr ip=192.168.2.248
或者
ifconfig eth0 192.168.2.248
save
```
tftp -g -r a.out 192.168.2.249(在服务器上下载程序a.out)
此时的a.out应该是用交叉编译arm-linux-gcc 1.c 生成的
生成的a.out应该更改权限 chmod 777 a.out
并且将a.out放到mytftp文件中
```
在超级终端中./a.out即可运行程序
程序编译出,如何在板子方便的验证(不用下载)
现象:NFS(网络文件系统)
Linux下使用根目录下挂载文件系统mounted on访问文件
/------------>ramdisk.img
1.ubuntu下开辟一个目录存放bin lib...
2./根目录映射到目录,以后打开文件都直接在目录中打开
思考:服务器(Ubuntu)
检查dpkg -s nfs-kerbel-server是否存在
1.sudo apt-get install nfs-kernel-server
2.指定根目录
解压rootfs根目录系统到sys中
3.内核的根目录和Linux的根目录 映射
pwd
sudo vi /etc/exports(nfs配置文件,把rootfs添加进去)
sudo service nfs-kernel-server restart (重启nfs,让配置生效)
客户端(开发板 kernel)
make menuconfig --> 添加nfs client功能
搜索nfs,打开(* NFS client support)
( * Root file system on NFS)
make uImage -j8
cp ....uImage ~/mytftp
修改启动参数
set bootargs root=/dev/nfs nfsroot=192.168.2.249:/home/hqyj/sys/rootfs,v3 rw console=ttySAC2,115200 clk_ignore_unused init=/linuxr
ip=192.168.2.248
set bootcmd tftp 41000000 uImage;tftp 42000000 exynos4412-fs4412.dtb;bootm 41000000 - 42000000