历史上的今天
今天是:2024年10月11日(星期五)
2018年10月11日 | OK6410-实验指令笔记
2018-10-11 来源:eefocus
默认启动参数:
bootargs=root=/dev/mtdblock2 rootfstype=yaffs2 init=/linuxrc console=ttySAC0,115200
bootcmd=nand read 0xc0008000 0x200000 0x500000;bootm 0xc0008000
baudrate=115200
ethaddr=00:40:5c:26:0a:5b
netmask=255.255.255.0
bootdelay=5
ipaddr=192.168.48.100
serverip=192.168.48.103
gatewayip=192.168.48.1
stdin=serial //标准输入
stdout=serial //标准输出
stderr=serial //标准错误
注意:"bootcmd=nand read 0xc0008000 0x200000 0x500000;bootm 0xc0008000"中相应地址是经过MMU映射过来的地址,不是具体的物理地址,
OK6410的DDR地址范围:0x50000000-0x60000000共256M大小
nand flash分区:
Creating 4 MTD partitions on "NAND 4GiB 3,3V 8-bit":
0x000000000000-0x000000200000 : "Bootloader"
0x000000200000-0x000000700000 : "Kernel"
0x000000700000-0x00000cf00000 : "User"
0x00000cf00000-0x000100000000 : "File System"
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4.3.2/bin
sudo vi /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4.3.2/bin
1th_led实验:
set serverip 192.168.48.103
set ipaddr 192.168.48.100
set gatewayip 192.168.48.1
save
tftp 0x50008000 led.bin
go 0x50008000
自己写bootloader启动内核,QT文件系统:
测试:把内核源码放到ubuntu先解压:
tar xzf linux-3.0.1-2012-09-23.tar.gz
cd linux-3.0.1-2012-09-23/
make uImage
会在arch/arm/boot/目录下生成uImage文件
把开发板设为SD卡启动,从SD卡启动后按空格键运行SD卡里的u-boot来烧写文件:
tftp 52000000 boot.bin
nand erase 0 200000
nand write 52000000 0 200000
tftp uImage 52000000
nand erase 200000 500000
nand write 52000000 200000 500000
断电把开发板设为nand flash启动,上电等uboot从nand flash中拷贝内核到DDR中再跳到DDR中运行即可看到内核启动信息
要提前用SD卡把QT文件系统烧写到nand flash中,内核才能挂载文件系统成功。
===============================================================================================================
开发板启动时自动挂载nfs文件系统:
①通过命令启动和停止ubuntu服务器的nfs 服务
在命令行下运行:
/etc/init.d/nfs restart
使用这个命令可以停止 nfs 服务:
/etc/init.d/nfs stop
检查nfs服务器是否开启:
service nfs status
重启对应的2个服务:
service portmap restart
service nfs restart
检查防火墙看是否屏蔽了nfs端口
service iptables stop
service iptables status
②设置ubuntu待挂载目录的权限:
sudo vi /etc/exports
添加:
/home/book/workspace/ok6410_project/fs_ok6410_yaffs2 *(insecure,rw,async,no_root_squash)
sudo chown book:book fs_ok6410_yaffs2/ -R
chmod 755 /home/book/workspace/ok6410_project/fs_ok6410_yaffs2
尝试自己挂载自己:
mount -t nfs -o nolock,vers=2 192.168.48.104:/home/book/workspace/ok6410_project/fs_ok6410_yaffs2 /mnt
mount -t nfs -o nolock 192.168.48.104:/home/book/workspace/ok6410_project/fs_ok6410_yaffs2 /mnt
③设置开发板ip参数:
vi /etc/init.d/rcS 在文件最后做如下修改,让内核启动后自动配置网络参数,打开网卡连接:
ifconfig eth0 192.168.16.16
ifconfig eth0 up
④修改u-boot启动参数:
默认值:
bootargs=root=/dev/mtdblock2 rootfstype=yaffs2 init=/linuxrc console=ttySAC0,115200
set bootargs root=/dev/mtdblock2 rootfstype=yaffs2 init=/linuxrc console=ttySAC0,115200
改为NFS启动后:
seten bootargs noinitrd root=/dev/nfs nfsroot=192.168.48.104:/home/book/workspace/ok6410_project/fs_ok6410_yaffs2 ip=192.168.48.100:192.168.48.104:192.168.48.255:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200
save
⑤重启开发板:
reset
reboot
=======================================================================================================
按键实验:
rmmod buttons
卸载驱动时报错:rmmod: chdir(/lib/modules): No such file or directory
遂创建/lib/modules目录:
mkdir -p /lib/modules/3.0.1
因为busybox的rmmod实现中使用到了lib/modules/3.0.1/这个目录,因此在根文件系统的中必须存在lib/modules/3.0.1/这个目录才能卸载
=======================================================================================================
异步通信按键实验:
make
arm-linux-gcc -o button_test button_test.c
cp buttons.ko button_test ../../fs_ok6410_yaffs2/driver/
测试:
insmod buttons.ko
========================================================================================================
nand flash驱动测试:
1、make menuconfig去掉内核自带的NAND FLASH驱动
-> Device Drivers
-> Memory Technology Device (MTD) support
-> NAND Device Support
< > NAND support for Samsung S3C
make zImage //生成内核镜像文件
cp arch/arm/boot/zImage ../../zImage_no_nand
2、把开发板设置为SD卡启动,使用SD卡启动后按空格进入SD卡的u-boot;
3、用SD卡里面的u-boot烧写内核到0x000000200000-0x000000700000 : "Kernel"分区:
tftp 50008000 zImage_no_nand
nand erase 200000 500000
nand write 50008000 200000 500000
4、烧写完成后设置开发版为nand flash启动,使用新内核启动, 并且使用NFS作为根文件系统,因为之前根文件系统在nand flash上面,现在内核去除了nand flash的驱动,内核就无法访问根文件系统了。
print命令查看u-boot参数:
bootcmd=nand read 0xc0008000 0x200000 0x500000;bootm 0xc0008000
baudrate=115200
ethaddr=00:40:5c:26:0a:5b
netmask=255.255.255.0
bootdelay=10
serverip=192.168.48.103
ipaddr=192.168.48.100
gatewayip=192.168.48.1
bootargs=noinitrd root=/dev/nfs nfsroot=192.168.48.104:/home/book/workspace/ok6410_project/fs_ok6410_yaffs2 ip=192.168.48.100:192.168.48.104:192.168.48.255:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200
==============================================================================================
LCD实验:
想在6410的驱动上面的测试自己的驱动首先要卸载开发板的官方驱动:
1、make menuconfig去掉内核自带的LCD驱动
在Device Drivers=>Graphics support=>S3C Framebuffer Support 和 Device Drivers=>Multimedia support=>Video For Linux这两项要去掉
默认:
->Device Drivers
[*] Multimedia support --->
[*] Video For Linux
->Graphics support
[*] S3C Framebuffer Support (eXtended)
Select LCD Type (4.3 inch 480x272 TFT LCD) --->
(X) 4.3 inch 480x272 TFT LCD
[*] Advanced options for S3C Framebuffer
Select BPP(Bits Per Pixel) (16 BPP) --->
(X) 16 BPP
(4) Number of Framebuffers
[*] Enable Virtual Screen
[*] Enable Double Buffering
改为:
->Device Drivers
[*] Multimedia support --->
[ ] Video For Linux
->Graphics support
[ ] S3C Framebuffer Support (eXtended)
[*] Support for frame buffer devices ---> //为了编译出要用的模块
[M] Samsung S3C Framebuffer Support
2、那是自带的驱动支持,还要在arch\arm\mach-s3c64xx\mach-smdk6410.c和change\mach-smdk6410.c这两个文件中相应的结构体注释掉:
s3c_device_vpp
s3c_device_mfc
s3c_device_tvenc
s3c_device_tvscaler
s3c_device_rotator
s3c_device_jpeg
s3c_device_g2d
s3c_device_g3d
这样子 就可以通过编译了:
make zImage //生成内核镜像文件
make modules
cp arch/arm/boot/zImage ../../zImage_no_lcd
然后把/drivers/video中的cfbcopyarea.ko 、cfbfillrect.ko 、cfbimgblt.ko 加载到开发板:
cp drivers/video/cfbcopyarea.ko drivers/video/cfbfillrect.ko drivers/video/cfbimgblt.ko ../../../fs_ok6410_yaffs2/driver/
3、把开发板设置为SD卡启动,使用SD卡启动后按空格进入SD卡的u-boot;
4、用SD卡里面的u-boot烧写内核到0x000000200000-0x000000700000 : "Kernel"分区:
tftp 50008000 zImage_no_lcd
nand erase 200000 500000
nand write 50008000 200000 500000
5、烧写完成后设置开发版为nand flash启动,使用新内核启动。
6、测试1:
重启开发板,然后执行以下命令
insmod cfbcopyarea.ko
insmod cfbfillrect.ko
insmod cfbimgblt.ko
insmod lcd.ko
echo hello > /dev/tty1
可以看到屏幕打印了文字hello
cat lcd.ko > /dev/fb0
可以看到花屏了
测试2:
在开发板的文件系统的/etc/inittab文件中添加一行tty1::askfirst:-/bin/sh
重启开发板,然后执行以下命令
insmod cfbcopyarea.ko
insmod cfbfillrect.ko
insmod cfbimgblt.ko
insmod lcd.ko
可以看到有文字在屏幕上显示,再装载我们之前做的输入子系统的按键驱动
insmod button_input.ko
就可以在开发板屏幕上看到shell命令行了
==================================================================
IP地址设置:
#设置开发板IP地址:
setenv ipaddr 192.168.0.232
#设置虚拟机IP地址:
setenv serverip 192.168.0.231
#保存设置参数
saveenv
TFTP:
1 Net
setenv bootcmd tftp 20008000 zImage\; bootm 20008000
2 Local
setenv bootcmd nand read C0008000 100000 500000\; bootm C0008000
NFS:
1 NFS FileSystem
setenv bootargs "root=/dev/nfs nfsroot=192.168.0.231:/work-2012/linux ip=192.168.0.232:192.168.0.231:192.168.0.201:255.255.255.0:witech.com.cn:eth0:off console=ttySAC2,115200"
上一篇:STM32系统时钟的监控和切换
史海拾趣
|
日前,德州仪器(TI)宣布推出一款新型1A bqTINY单体锂离子电池线性充电器,该产品增强了热过载保护稳压(thermal fold-back regulation)以及低压降电源管理功能。对于多种通过电池充电底座或AC适配器进行充电的应用来说,该款新型3x3毫米器件将使充电 ...… 查看全部问答> |
|
随着现代信息技术的高速发展,数字医学诊断系统不断地更新与完善。医用相机(或打印机)作为CT、CR、MR、DSA等先进医疗设备的输出设备,已基本取代了多幅相机,成为大多数医院的最佳选择。本文着重介绍目前使用较多的干式、湿式激光相机的原理及维护 ...… 查看全部问答> |
|
最近遇到一个疑惑的问题:、 在我做的东东里有一步是对硬件及其相关进行检测,可是在对芯片的BGA信号(不知道这样说行不行) 进行检测的时候却老是不通过,下面是出错的地方: BOOL DrvExioBitTstGpio(EXIO_PORTMAP io) { ...… 查看全部问答> |
|
本人在TAOBAO上买了个AVR学习板,卖家当时给了个XP的驱动,现在系统换成了win7,卖家不理人了。请教各位,学习板的驱动听说是通用的,我在网上搜了都不能用,在我的电脑--设备管理器里就是没有PORT口和COM口的那一项,学习板也联不上。请高手指点 ...… 查看全部问答> |
|
undefined first referenced >> Compilation failure symbol in file --------- ---------------- P1DIR ./cry1602.obj P1IN  ...… 查看全部问答> |




