技术分享armlinux一移植必杀技smartkids电子技术应用AET中国科技核心期刊

去年终结了ARM-wince移植的必杀技,几个简单的要点,现在总结了linux的关键要点如下,希望大家抛砖。把自己以前移植的wince和linux移植的一些简单要点都罗列了,希望大家提出更好的意见,或者指出我笔记的错误。

1.uboot传递给linux内核的nfs启动命令行:

setenvbootargsmem=64Mconsole=ttyS0,57600root=/dev/nfsrwnfsroot=192.168.1.6:/home/linucos/newmsg/nfsrootnfsaddrs=192.168.1.8:192.168.1.6:192.168.1.1:255.255.255.0

备注:自己ip:服务ip:网关:掩码

2.uboot传递给linux内核的nandflash上文件系统的命令行:

setenvbootargsconsole=ttyS0,57600root=/dev/mtdblock0init=/linuxrcrootfstype=jffs2

3.uboot传递给linux内核内存ramdisk文件系统的命令行:

setenvbootargsconsole=ttyS0,57600root=/dev/ram0rwinitrd=0x21100000,15360000init=/linuxrc

备注:initrd=指示文件系统在内存中的位置,压缩前大小;同时,内核要进行相应的配置

4.busybox下tftp命令使用:

tftp-rtmp-g192.168.1.6

得到服务器192.168.1.6上的tmp文件,-g表示get,-r表示remote,192.168.1.6表示服务器ip

同理,

tftp–ltmp–p192.168.1.6

保存本地tmp到192.168.1.6上,-p表示put,-l表示local,192.168.1.6依然是服务器ip

5.查看linux分区

cat/proc/partitions

可以看见分区的设备名,主次设备号等很实用的

6.同步串口和LCD显示

只要在原来的bootargs上加:console=tty0即可,如:

setenvbootargsconsole=ttyS0,57600console=tty0root=/dev/mtdblock0init=/linuxrcrootfstype=jffs2

(使用denx官方的文件系统,比较全面,很好)

可能是因为etc目录下配置文件被chmod以为改变权限,解决办法是:直接copy新的etc目录即可,同时注意保留修改过的profile等配置文件

8.普通linuxC程序简单休眠

包含#include

sleep(5);即可

9.修改root环境变量

编辑~/.bashrc文件,新增变量直接写变量如:

JAVA_HOME=/home/.../java所在文件夹

编辑已有变量如:

JAVA_HOME=$JAVA_HOME:/home/.../java所在文件夹

10.终端下快速进入埋藏很深的工作目录的方法

有时候工作目录会很深,简便的办法是:~/.bashrc下增加环境变量即可,如:

工作目录/home/..../works

增加环境变量WK=/home/..../works

exportWK

每次使用只有cd$WK即可

11.ubuntu图形界面用root权限操作

sudognome-open文件夹名称,如:

sudogonme-open/用root权限打开根目录了

12.SecureCRT终端回滚行数

有时候,终端结果回滚的行数会很多,有些错误被后边的行覆盖掉

设置会话选项-回滚缓冲区值就可以了,比如5000

13.linux开机logo制作方法

从最初的png图片,制作到最后的ppm图片

同样的方法将函数staticvoidfbcon_cursor(structvc_data*vc,intmode)用空函数替换

24.ubuntu停止和开启图形界面服务

/etc/init.d/gdmstop就可以停止图形服务

/etc/init.d/gdmstart开启图形服务

25.改变uboot和linux内核内容输出串口

uboot中简单的修改,include/configs/.h配置文件即可,我的修改:

#defineCONFIG_ATMEL_USART1#defineCONFIG_USART01#undefCONFIG_USART1#undefCONFIG_USART2#undefCONFIG_USART31/*USART3isDBGU*/原来是dbug口,undef后不使用了

linux中,一般在io_map下,两个内容需要做:

第一是添加相应串口设备,第二是注册相应串口为串口控制台,我的修改如下:

/*DBGUonttyS0.(Rx&Txonly)*/at91_register_uart(0,0,0);//原来的

/*USART0onttyS1.(Rx&Txonly)*/at91_register_uart(AT91RM9200_ID_US0,1,0);//新加的

/*setserialconsoletottyS0(ie,DBGU)*/at91_set_serial_console(0);//原来的

/*setserialconsoletottyS0(ie,uart0)*/at91_set_serial_console(1);//新加的

内核配置中,稍有修改,调整早期输出到相应串口选项即可,此选项一般在相应的板子类型下,我的修改成uart0

同时,uboot给linux传递参数注意添加console=ttyS1等

26.tar命令小结

tar-xvffoo.tarverboselyextractfoo.tartar-xzffoo.tar.gzextractgzippedfoo.tar.gztar-cjffoo.tar.bz2bar/createbzippedtararchiveofthedirectorybarcalledfoo.tar.bz2tar-xjffoo.tar.bz2-Cbar/extractbzippedfoo.tar.bz2afterchangingdirectorytobartar-xzffoo.tar.gzblah.txtextractthefileblah.txtfromfoo.tar.gz

27.cp命令小结

cpsourcetarget

28.jffs2文件系统制作

mkfs.jffs2-rrootfs-orootfs.jffs2-e0x4000-n

更多选项直接mkfs.jffs2help

29.给开发板增加域名解析

touch/etc/resolv.conf

那么怎么获取dns地址呢?也和简单的,因为开发板一般和主机用一个路由,所以呢,看看本机/etc/resolv.conf下面的地址就好了,如样添加即可,我的是:

nameserver202.101.172.35nameserver202.101.172.47

30.qtopia-2.2.0编译x86版本

进入源码根目录后,简单的:

./configure-qpe'-prefix=/usr/local/ARM/qtopia_x86'

make

makeinstall

-qpe是指qtopia的配置参数,同时-qte是指qt-embbed;install后prefix指定的目录下,既有安装后的x86版本的qtopia了

31.pc上模拟qtopia

我们使用工具qvfb来模拟qtopia,这里用2.2.0版本,根据30中步骤编译成功后:

qvfb-height240-width320&

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/ARM/qtopia_x86

QTDIR=/usr/local/ARM/qtopia_x86

QPEDIR=/usr/local/ARM/qtopia_x86

/usr/local/ARM/qtopia_x86/bin/qpe&

如果,

想要开机启动自己做的东西,不要显示qtopia桌面的话,直接:

/usr/local/ARM/qtopia_x86/bin/music-qws&

31.linux配置网络

ifconfiglo127.0.0.1

ifconfigeth0192.168.1.58netmask255.255.255.0

routeadddefaultgw192.168.1.1

以上使用busybox1.15

32.uboot操作norflash和nandflash

习惯上norflash被称作flash,nandflash被称作nandflash,很多情况下,涉及到nor和nand的读写

nor读

cp0x100000000x220000000x50000

从哪到哪长度

nor写

cp0x220000000x100000000x50000

nand读

nandread0x220000000xa00000x200000

到哪从哪长度

nandwrite0x220000000xa00000x200000

33.uboot自行执行命令的方法

在需要执行某命令的地方运行函数run_command("","")即可,如:

run_command("nandread0x220000000xa00000x200000;bootm","");

即可自动执行了

34.linux的io重定向

a、I/O重定向通常与FD有关,shell的FD通常为10个,即0~9;b、常用FD有3个,为0(stdin,标准输入)、1(stdout,标准输出)、2(stderr,标准错误输出),默认与keyboard、monitor、monitor有关;c、用<来改变读进的数据信道(stdin),使之从指定的档案读进;d、用>来改变送出的数据信道(stdout,stderr),使之输出到指定的档案;e、0是<的默认值,因此<与0<是一样的;同理,>与1>是一样的;f、在IO重定向中,stdout与stderr的管道会先准备好,才会从stdin读进资料;g、管道“|”(pipeline):上一个命令的stdout接到下一个命令的stdin;

cmd>file把stdout重定向到file文件中;cmd>>file把stdout重定向到file文件中(追加);cmd1>fiel把stdout重定向到file文件中;cmd>file2>&1把stdout和stderr一起重定向到file文件中;

cmd2>file把stderr重定向到file文件中;

cmd2>>file把stderr重定向到file文件中(追加);

cmd>>file2>&1把stderr和stderr一起重定向到file文件中(追加);

cmdfile2cmd命令以file文件作为stdin,以file2文件作为stdout;cat<>file以读写的方式打开file;cmd

35.终端语法高亮

终端分为两种:1.本地2.远程

本地一般是xterm,远程则是secureCRT之类

apt-getinstallvim即可替代原有vi无语法高亮的不足

36.ls或其他命令不能用

注意是不是无意间改变了so共享库的查找路径LD_LIBRARY_PATH,出现

ls:errorwhileloadingsharedlibraries:libc.so.6:ELFfileOSABIinvalid

只需要修改回来即可

37.qtopia显示中文与中文化

38.konqueror支持中文,qtopia能显示中文后,konqueror即可显示中文了,否则尝试选择相应字体或者重新编译

39.qtopia中文输入法

MurphyPinyin输入法,移植相当简单,不再赘述

40.armlinuxLCD不能正常显示

一般的3.5的tftlcd默认是RGB的24bit模式,且RGB顺序是高位R低位B,屏幕一般不要初始化即可使用,不能正常显示的原因从以下几个入手:

<1>行长帧长行前行后帧前帧后,决定了屏幕显示是否在正确位置,可能硬件没连接好,可能控制器信号没送出

<2>屏幕正常显示,但是闪动或抖动,可以查找clk速率的问题

<3>同时行长帧长行前行后帧前帧后数据使能时钟,几个信号的相位可能导致显示不出来或者显示不正常

<4>正常显示,但是颜色不正常,注意R和B的顺序,同时16bit模式下的555和565问题,可以配置linux内核到24位模式尝试

41.c程序加printf调试方法

#ifdefined(DBG)#definedbg_printf(fmt,arg...)/printf(fmt,##arg)#else#definedbg_printf(...)/do{}while(0);#endif

#ifdefined(HYBRIDOS_SAMPLE_DEBUG)#definedbg_printf(fmt,arg...)do{printf(fmt,##arg);}while(0)#else#definedbg_printf(fmt,arg...)do{}while(0)#endif42.linuxnandflashmtd分区技巧

可以把最后一个分区的.size设置成MTDPART_SIZ_FULL,/*Occupyrestofflash*/,表示剩余大小

43.jffs2文件系统制作注意

mkfs.jffs2-rxxx-oxxx.jffs2-e擦除大小-n没有cleanmarker-p不指定大小填充到最后一个eraseblock

一般擦除大小根据nand手册确定,64M为0x4000即16K,128M为0x20000即128K

44.注意mac地址哦

ifconfigeth0downifconfigeth0hwether00:00:AA:BB:CC:DDifconfigeth0up

45.让linux内核支持yaffs2

需要给内核打个补丁(2.6.30),之后内核配置的时候选择下,制作工具分为大page和小page区别,制作即可

46.linux内核解压后停止

出现:

UncompressingLinux................................................................................................................................done,bootingthekernel.

停止

解决办法,可以尝试bootargs添加mem参数

47.linux驱动架构简单跟踪

总之呢,一个注册设备分配管脚,一个初始化驱动~

48.uboot的环境变量保存

--1--保存在nand

#defineCONFIG_SYS_USE_NANDFLASH

#defineCONFIG_ENV_IS_IN_NAND

--2--保存在nor

#defineCONFIG_SYS_USE_FLASH

#defineCONFIG_ENV_IS_IN_FLASH

其他编译时候缺什么宏,补上就可以了~

49.uboot环境变量保存地址

#defineCONFIG_ENV_OFFSET0x60000

即是相对存储设备的偏移

50.makemenuconfig中本来有的选项没有出现,不能选择

检查下,是不是依赖哪个依赖的条件没有被选中,选中即可

51.如何去掉makemenuconfig中的依赖关系

所用模块的文件夹下找kconfig脚本,找到你想找的项目,下面会发现:

configTOUCHSCREEN_AD7877tristate"AD7877basedtouchscreens"dependsonSPI_MASTER

dependson字样就是依赖关系,去掉即可显示了,但是会依赖其他问题,那是后话

52.linux下gpio中断问题

error=request_irq(gpio_to_irq(AT91_PIN_PA21),uh7843_ts_interrupt,0,"Touchscreendriver",pdev);

一般这样申请,注意如果改成

error=request_irq(gpio_to_irq(AT91_PIN_PA21),uh7843_ts_interrupt,IRQF_SHARED,"Touchscreendriver",pdev);

申请失败,原因还没有探究

53.linux输入子系统理解

linux输入子系统分为3层来理解:

--1--driver

驱动硬件,需要想core层注册输入设备,所有的信息通过标准消息通知core

--2--core

处理核心,与驱动关系不大

--3--eventhandle

54.arm汇编点灯

#if0movr0,#0x1movr2,#0x0strr0,[r2,#0xfffff800]movr0,#0x1movr2,#0x0strr0,[r2,#0xfffff810]movr0,#0x1movr2,#0x0strr0,[r2,#0xfffff830]#endif

55.arm的C语言点灯

voidshine_led(void){volatileunsignedintcnt=0;volatileunsignedintdly=0;*((unsignedint*)(0xfffff800+0x0))=(0x1<<0);*((unsignedint*)(0xfffff800+0x10))=(0x1<<0);for(cnt=0;cnt<6;++cnt){if(cnt%2)*((unsignedint*)(0xfffff800+0x30))=(0x1<<0);else*((unsignedint*)(0xfffff800+0x34))=(0x1<<0);for(dly=0;dly<50000;++dly);

for(dly=0;dly<50000;++dly);

}}

56.内建环境变量

#defineCONFIG_IPADDR192.168.1.158#defineCONFIG_ETHADDR12:34:56:78:90:12#defineCONFIG_SERVERIP192.168.1.60

57.shell判断文件存在与否

ptcf="/etc/pointercal"

if[!-f"$ptcf"];then/etc/tslib/bin/ts_calibratefi

57.uboot保存环境变量技巧

有时候我们需要nfs和mtd切换启动,复制粘贴不放心,敲来敲去麻烦,可以使用下面的方法,看例子即知道怎么做

ba0=console=ttyS0,57600root=/dev/mtdblock0rwinit=/linuxrcrootfstype=jffs2ba1=console=ttyS0,57600root=/dev/nfsrwnfsroot=192.168.1.60:/home/linucos/newmsg/nfsroot_busyboxnfsaddrs=192.168.1.192:192.168.1.60:192.168.1.1:255.255.255.0mem=64Mbootargs=console=ttyS0,57600root=/dev/mtdblock0rwinit=/linuxrcrootfstype=jffs2

实际上其中的bootargs设置是这样的

setenvbootargs$(ba0)

也就是uboot可以定义环境变量的,这样,切换启动方式方便至极

THE END
1.logo的制作方法快速制成logo 快速制成logo可以通过以下两种方法: 1. 一键logo设计:这是一款在手机上使用的logo设计工具,可以轻松制作出个性鲜明的logo图标。用户只需下载并https://www.zcbm580.com/pos/w845ngzqz.html
2.logo制作方法技巧良好的logo设计、品牌设计可以吸引眼球,从而赢得更多的合作机会。本文是关于logo制作方法技巧分享文章,帮助企业打造品牌资产。 配图为UCI设计公司案例 logo制作方法技巧分享正文: 1使用生成软件,企业名称一键生成后即可自行添加,非常方便。2,使用纯字母,这个logo的效果比较有意思。3善于利用圈子。大小不同,颜色不同,空间层http://www.chinauci.cn/news/industry/24509.html
3.一个简单LOGO的制作方法一个简单LOGO的制作方法承蒙诸位捧场,让区区可以在此写点教程讨碗饭吃,但必须先声明,区区其实也是菜鸟一个,不过是比各位飞得早些而已。区区的方法是自己摸索出来的,具体做法是在psotoshop中一张一张地做好,再用ImageReady导入合成动画,而Firework只是用来加工,这些方法也许比之正确方法累赘、麻烦许多,可能说出来会误http://www.360doc.com/content/06/1205/18/7986_283776.shtml
4.logo怎么做?教你制作logo的方法Logo作为一个公司的门面,毫无疑问十分地重要。请别人设计需要反复沟通,修改的过程十分地麻烦。同时还价格不菲。倒不如自己动手设计,省去了复杂的人际沟通,同时还节约成本。那么logo怎么做呢?下面小编就来教大家一个logo制作的方法。 一、 小威LOGO 这是一款AI智能logo生成制作软件,无论是自动生成,还是自己通过素材的https://www.epwk.com/meijie/295865.html
5.免费制作logo的方法有哪些?想要开公司,那肯定要设计logo,最简单的方法就是直接找个logo设计公司就行了,但如果资金比较紧张,可以直接自己做一个,大家不要感觉logo设计困难,下面我就教大家几个免费制作logo的方法。 logo是什么? 磨刀不误砍柴工,大家先看一下logo的含义。logo是徽标或者商标的外语缩写,是logotype的缩写,起到对徽标拥有公司的https://www.niurensheji.com/article/design/101.html
6.美图秀秀如何制作LOGO美图秀秀制作LOGO方法详解小伙伴们都知道 美图 秀秀这款软件可以进行功能强大的 图片编辑 处理 工作 ,但其实,这款软件的潜力远不止此,用户还可以使用这款软件中的各种工具制作出一些你需要的图片或者是 艺术 文字,今天小编要为大家介绍的,就是如何在这款软件中制作LOGO,方法非常的 简单 ,感兴趣的小伙伴们可以看一下下面这篇文章分享,学https://g.pconline.com.cn/x/158/15824448.html
7.制作LOGO的35种方法ClassXmanA logo design is really a graphical element (ideogram, symbol, emblem, icon, sign) that, along with its logotype (a exclusively set and arranged typefhttps://www.cnblogs.com/james1207/p/3268859.html
8.如何用AI设计动物logo?动物logo的制作方法动物logo的制作方法 相信大家在日常出门逛街的时候也看到过一些店铺是动态的logo吧,这样的logo会吸引顾客的眼球。下面就以ai动态猫粮店铺logo设计为例,给大家进行具体的操作方法分享,想要学习这一技巧的小伙伴们,快来认真的学习吧! 1、打开【AI】软件,新建画布,使用【椭圆工具】绘制一个圆,在【属性】中选择圆头端点https://m.yutu.cn/news_34721.html
9.抖店小店店铺logo怎么设置?抖店小店logo制作免费方法!抖店小店logo制作免费方法! 开通抖店小店,平台要求我们必须要上传店铺logo,而且要求这个logo的尺寸必须是800*800像素。 今天教你一个不花一分钱,免费就能生成一个抖店小店店铺logo,亲测好用。 第一步,进入免费店铺logo生成的工具这个页面,然后在这个地方输入你的店铺的名称,然后点击开始设计:https://wuhan029957.11467.com/news/3322036.asp
10.淘宝店铺logo免费制作方法是什么?具体操作步骤!淘宝店铺logo免费制作方法是什么?具体操作步骤!想做一个淘宝店铺logo,那么具体的制作步骤是什么样的?有什么制作? 1.首先我们要下载一个美图秀秀软件,这个软件操作起来非常的简单,非常的适合新手去操作,因为它是一个非常好用的美工软件。然后我们下载安装到自己的电脑上。 https://www.jiulangdianshang.com/quantaojiaocheng/1496.html
11.免费的LOGO在线设计制作工具(建议转发收藏)logo样式:最新图标、字母图标、动物图标、厨师美食、房屋建筑、植物图标、龙凤神兽、商标设计、文字设计、欧式花纹 网站获取 点赞+收藏+分享+点亮在看,私信"logo制作"自动获取网站或主页进交流群 使用方法 打开网站-免登录 输入你想要设计的文字 点击生成 https://www.360doc.cn/article/83807904_1122511583.html
12.logo设计方法解读(精选6篇)现代LOGO设计可借书法体字造型、设计处理(简化、繁化、夸张、变形)、笔墨效能(笔触、墨韵)及装饰手法来传达其美学观念,讲究如何以点、线、面架构出新的布局,提炼产生多种线条语言与文字境界,蕴涵某种主题思想或精神品质。汉字从其造型和形式上与标志有着很多相通之处。从汉字的造型方法、结构特点等角度来研究其与https://www.360wenmi.com/f/filek22uejxx.html
13.抖音小店logo生成的2种方法,新手也能一键制作!抖客Plus每一个抖音小店都需要一个店铺logo,一个好的logo图片也有助于帮助用户记住你。 不会制作店铺logo的新手商家也不用担心,抖店现在可以自动生成logo。 下面我们讲一下抖音小店logo制作的2种方法,以及logo的使用规范。 第一种:系统自动生成logo 这是抖音小店新出的一个功能,你只需要输入店铺名称,系统就可以自动给你https://www.doukeplus.com/7435.html
14.3dmax软件制作精美logo标志的方法与详细步骤3Dmax如何制作logo?除了平面软件能制作logo,3dmax也可以制作好看的logo。本文小编将和大家分享3dmax软件制作精美logo标志的方法与详细步骤,感兴趣的小伙伴们快和小编一起来看看怎么用3dmax制作logo标志吧! 3dmax软件制作精美logo标志的方法如下: 步骤一、打开3Dmax软件,点击【创建】-【图形】-【线】,在作图区域绘制一个http://www.moxingyun.com/news/detail-jichu-1008799388.html
15.三种常见的logo标准制图方法文章摘要:在logo实际设计制图过程中,常见的标准绘制方法有三种,即标志的阴阳图案、标志的网格制作和标志的比例制作。这三种制图方法在制作过程中有很大的差异,这完全取决于它们在设计中不同辅助元素的应用。例如,表格制图方法使用网格元素,而比例制图方法使用空间比例。 https://www.koidesign.cn/3574.html
16.免费logo制作器几秒钟内制作logo制作新颖独特的 logo,激发客户对您品牌和产品的信心。 深受140,000 多名企业主的信赖 我已将此用于个人品牌推广,利用坐在 Uber 车中的时间就制作了一个 logo。太简单了。 Torian J. 为Facebook、Instagram 和 Pinterest 创建 logo 的有趣、快速且简单的方法! https://www.shopify.com/zh/tools/logo-maker
17.怎么使用ps制作logoPS教程ps制作logo的方法 1、新建适当大小白色背景文件,创建新图层; 2、用“自定义形状工具”绘制出一个禁止标志logo形状,栅格化图层“编辑--填充”用红色填充; 3、打开一张网上下载的烟草素材,拖进来,ctrl+t调整大小、位置; 4、双击图层调出“图层样式”,添加logo“斜面和浮雕”等效果; https://www.php.cn/php-weizijiaocheng-428045.html
18.怎么制作个人logo设计?分享简单的操作教程怎么制作个人logo设计?分享简单的操作教程 近这几年来越来越多的的朋友为自己设计一些简单又好看的个人logo设计在微博或者自己的网页上展示,那么个人logo怎么设计呢?今天就让设计古柏广告设计为大家分享一下个人logo设计简单方法技巧。 在商业领域而言,LOGO是标志、徽标的意思。我们常见的各种商品的标识即是Logo,也就是https://www.goobai.com/logoxw/2211.html