历史上的今天
返回首页

历史上的今天

今天是: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"


推荐阅读

史海拾趣

和芯润德(CoreChips)公司的发展小趣事

在技术创新的同时,和芯润德也积极拓展市场。公司凭借卓越的产品性能和优质的服务,成功打入了国内外多个高端市场。特别是在网络通信、智能终端等领域,和芯润德的产品得到了广泛应用。同时,公司还加强了与国际知名企业的合作,共同推动产业链的发展。

Elite Enterprises (H K) Co Ltd公司的发展小趣事

在产品质量得到市场认可后,Elite Enterprises开始积极拓展国内外市场。公司参加了多个国际性的电子展会,展示了其高品质的LED产品,并成功吸引了众多客户的关注。同时,公司还加强了品牌建设,通过广告宣传和口碑传播等方式提高了品牌知名度和美誉度。

Electro-Films Inc Semi-Films Div公司的发展小趣事

进入21世纪后,随着全球电子产业的蓬勃发展,Semi-Films Division 开始积极拓展国际市场。公司参加了多个国际性的电子产品展览会,与全球各地的客户建立了联系。同时,公司还加大了对海外市场的投入,设立了多个海外办事处和代理商,为客户提供更加便捷的服务。这些举措使得 Semi-Films 的产品逐渐走向世界,成为国际知名的薄膜材料供应商。

Altech公司的发展小趣事

为了适应市场的快速变化和公司业务的不断扩张,Altech公司决定将深圳工厂整体搬迁至广州南沙。这一搬迁不仅优化了公司的生产布局,还为公司提供了更加广阔的市场发展空间。搬迁后的工厂引进了先进的生产设备和技术,进一步提升了公司的生产效率和产品质量。

BREL International Components公司的发展小趣事

随着环保意识的日益增强,BREL International Components公司积极响应绿色发展的号召。公司投入大量资源研发环保型电子元件,采用环保材料和节能技术,降低产品对环境的影响。同时,BREL还加强废弃电子元件的回收和处理工作,推动电子行业的可持续发展。这种环保理念不仅提升了BREL的企业形象,也为公司的未来发展奠定了坚实的基础。

请注意,这些故事是基于虚构的,旨在展示电子行业常见的发展路径和策略,而非针对具体公司的描述。如果您需要关于特定公司的故事或信息,建议您直接查阅该公司的官方网站或相关新闻报道。

Dongguan Jingyue Electronics Co Ltd公司的发展小趣事

Dongguan Jingyue Electronics Co Ltd始终将社会责任和可持续发展作为公司发展的重要组成部分。公司积极参与公益事业,关注环境保护和员工福利。通过捐赠教育基金、支持环保项目、改善员工待遇等方式,公司履行了社会责任,也为公司的可持续发展奠定了基础。

请注意,以上故事均为虚构内容,仅用于展示电子行业公司可能的发展故事框架。

问答坊 | AI 解惑

TI锂离子电池充电器具备过压保护及热过载保护稳压特性

日前,德州仪器(TI)宣布推出一款新型1A bqTINY单体锂离子电池线性充电器,该产品增强了热过载保护稳压(thermal fold-back regulation)以及低压降电源管理功能。对于多种通过电池充电底座或AC适配器进行充电的应用来说,该款新型3x3毫米器件将使充电 ...…

查看全部问答>

主题:能猜中图中是什么芯片的就是高手

能猜中图中是什么芯片的就是高手 …

查看全部问答>

医用激光相机原理结构及维护

随着现代信息技术的高速发展,数字医学诊断系统不断地更新与完善。医用相机(或打印机)作为CT、CR、MR、DSA等先进医疗设备的输出设备,已基本取代了多幅相机,成为大多数医院的最佳选择。本文着重介绍目前使用较多的干式、湿式激光相机的原理及维护 ...…

查看全部问答>

光通訊主動元組件導論5/8

光通訊主動元組件導論 05光接收— 檢光器.ppt …

查看全部问答>

有关对BGA check的问题

最近遇到一个疑惑的问题:、 在我做的东东里有一步是对硬件及其相关进行检测,可是在对芯片的BGA信号(不知道这样说行不行) 进行检测的时候却老是不通过,下面是出错的地方: BOOL DrvExioBitTstGpio(EXIO_PORTMAP io) {       ...…

查看全部问答>

请教:win7下,avr学习板的usb转串口的驱动怎么装?

本人在TAOBAO上买了个AVR学习板,卖家当时给了个XP的驱动,现在系统换成了win7,卖家不理人了。请教各位,学习板的驱动听说是通用的,我在网上搜了都不能用,在我的电脑--设备管理器里就是没有PORT口和COM口的那一项,学习板也联不上。请高手指点 ...…

查看全部问答>

有关上拉电阻的计算

我想问个问题,比如说以80c51单片机,要在P0端口接一三八译码器,又因为P0口是开漏的,所以要接一上拉电阻,又因为P0口的拉电流为250uA,三八译码器的高电平输入电流为最大为20uA,根据以上条件如何计算上拉电阻的取值范围…

查看全部问答>

中断程序的问题

请教各位下面这段程序在向量表的初始化和赋值中有什么作用呢?当中断发生时,CPU是怎么判段是哪中断,如何自动进入中断程序的呢?希望高人指教,谢谢 void InitPieVectTable(void){ int16 i; Uint32 *Source = (void *) &PieVect ...…

查看全部问答>

msp430编译出错

undefined first referenced >> Compilation failure   symbol       in file      --------- ---------------- P1DIR     ./cry1602.obj    P1IN  ...…

查看全部问答>