内核配置配置一个新的暂时性测试用的内核并下载到单板SDRAM测试
Posted 大秦长剑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内核配置配置一个新的暂时性测试用的内核并下载到单板SDRAM测试相关的知识,希望对你有一定的参考价值。
主 机:VMWare--Ubuntu-16.04.2-x64-100ask
开发板:Mini2440--256M NandFlash, 2M NorFlash, 64M SDRAM, LCD-TD35;
bootlorder:u-boot1.16, Kernel:2.6.22.6;
编译器:arm-linux-gcc-3.4.5
目录
一、目的:配置一个没有LCD模块的内核,用新内核去挂接到开发板0x30000000(即SDRAM)进行测试
1、 编译一个新的没有LCD模块的内核--uImage_mlcd
3、 重新配置单板根文件系统的/etc/inittab文件,使得单板上的Linux系统拥有串口0终端和单板按键-LCD两个控制台
一、目的:配置一个没有LCD模块的内核,用新内核去挂接到开发板0x30000000(即SDRAM)进行测试:
# nfs 30000000 192.168.1.105:/work/nfs_root/uImage_mlcd
挂接(服务器上的)网络根文件系统到(开发板根文件系统的)/mnt,从flash上启动根文件系统:
# mount -t nfs -o nolock,vers=2 192.168.1.105:/work/nfs_root/fs_second /mnt
说明:经在单板测试,若单板上的根文件系统原本就是挂接的服务器上的根文件系统(例如:fs_second),则不需再用mount命令挂接网络根文件
系统到开发板了!可直接进行驱动模块加载等试,执行命令:
# echo hello > /dev/tty1
均可在单板LCD上打印出字符串“hello”!
二、操作步骤:
1、 编译一个新的没有LCD模块的内核--uImage_mlcd
$ cd /home/book/workbook/mini2440/systems/linux-2.6.22.6/
$ make menuconfig //配置内核,去掉原来的LCD驱动程序;
-> Device Drivers
-> Graphics support
<M> S3C2410 LCD framebuffer support //配置为<M>,即模块,可以事后加载使用;
$ make uImage //编译生成新内核;
$ cp arch/arm/boot/uImage /work/nfs_root/uImage_nolcd
$ make modules //编译模块,是为了把fb_ops结构体的3个cfb_xx函数对应的cfb_xx.c源文件编译成.ko文件(模块),供稍后测试时使用。
2、 用新内核启动开发板,在倒数计时结束前按下“空格”键,进入uboot菜单>
OpenJTAG> print
...(打印的内核信息..)
ipaddr=192.168.7.17
...(打印的内核信息..)
OpenJTAG> set ipaddr 192.168.1.17
OpenJTAG> save
OpenJTAG> nfs 30000000 192.168.1.105:/work/nfs_root/uImage_mlcd //uImage_mlcd是内核菜单配置时,LCD_fb配置为<M>,即模块,可以事后加载使用;
OpenJTAG> bootm 30000000 //启动新内核uImage_mlcd;
<启动内核...>
# mount -t nfs -o nolock,vers=2 192.168.1.105:/work/nfs_root/fs_second /mnt
# cd /mnt
# ls
bin driver_test lib mnt sbin usr
dev etc linuxrc proc sys
3、 重新配置单板根文件系统的/etc/inittab文件,使得单板上的Linux系统拥有串口0终端和单板按键-LCD两个控制台
- 修改inittab文件:
# vi /etc/inittab
#/etc/inittab
#console::askfirst:-/bin/sh
::sysinit:/etc/init.d/rcS
s3c2410_serial0::askfirst:-/bin/sh
tty1::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
- 查看:
# cat /etc/inittab
#/etc/inittab
#console::askfirst:-/bin/sh
::sysinit:/etc/init.d/rcS
s3c2410_serial0::askfirst:-/bin/sh
tty1::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
- # reboot //重启系统;
OpenJTAG> nfs 30000000 192.168.1.105:/work/nfs_root/uImage_mlcd
OpenJTAG> bootm 30000000 //启动新内核uImage_mlcd;
<启动内核...>
# mount -t nfs -o nolock,vers=2 192.168.1.105:/work/nfs_root/fs_second /mnt
# cd /mnt
# insmod cfbcopyarea.ko
# insmod cfbimgblt.ko
# insmod cfbfillrect.ko
# insmod lcd_6.ko
Console: switching to colour frame buffer device 30x40
# insmod input_keys2.ko
input: Unspecified device as /class/input/input1
<此时,LCD屏幕显示提示信息...以下都是单板按键--LCD屏幕控制台的LCD屏幕的显示信息...>
Please press Enter to activate
starting pid 768, tty ‘/dev/tty1‘: ‘/bin/sh‘
# ls
bin dev etc driver_test ...
- 问题:刚加载好了LCD模块,LCD可以正常使用,但是过一会不用就黑屏了,不能再显示写入的字符串了,为什么?
答:Linux下的LCD驱动默认在无操作之后10分钟后会自动关闭屏幕。
- 问题:怎么唤醒LCD屏幕呢?
答:若加载了单板的输入子系统,可直接敲击单板上的指令“按键”,即可自动唤醒LCD屏幕进行指令操作。
在中断执行命令# echo wakakak > /dev/tty1 虽然仍然可以发送字符到单板LCD屏幕,但是不能唤醒LCD屏幕,需要用单板按键唤醒!
以上是关于内核配置配置一个新的暂时性测试用的内核并下载到单板SDRAM测试的主要内容,如果未能解决你的问题,请参考以下文章
RK3399系统移植 | 移植 linux 主线5.4.32内核