徐松亮linux教学-杂项笔记

版权声明:本文为博主徐松亮的原创作品,未经允许不得转载,多谢支持!QQ:5387603

推荐点击此链接:欢迎进入徐松亮博客一站式导航搜索(随时更新)


既然叫杂项笔记,就是说杂乱无章的笔记,此笔记的主要目的不是为了教学,而是用于本人学习过程中的点滴记录,之所以开放,就是希望能给新手及爱好者些许点滴概念性帮助。

此资料为数年前的资料,漏洞较多,方法软件有些落后,仅供参考。


目录

1,硬件厂家说明:

2,常用软件

 3,常用指令(未完,待整理)

cp

ls

ps

kill

cd

rm

mkdir

tftp

ping

telnet

tar

dmesg

arping

passwd

vi

gedit

cat

find

chmod

chown

chmod

ifconfig

echo

sync

history

自动补全

sudo

 4,主机与设备传送文件

 通过网口传送文件---tftp

 通过网口传送文件---SFTP

 通过TF卡传送文件

5,安装交叉编译链

准备工作

操作步骤

 6,编译uboot

准备工作

操作步骤

 7,编译linux

准备工作

操作步骤

8,生成文件系统

准备工作

操作步骤

9,IP/MAC地址修改

SHELL方案

程序方案

10,如何设置程序上电后自动启动

 11,开发板中的linux如何修改用户名和密码

12,linux服务器获取客户端MAC地址

13,开启telnet(更新厂家busybox)

14,RTC

15,增加arp和arping服务

16,将按键驱动改为串口驱动

17,按公司需求修改内核与文件系统

修改文件系统:

修改内核

修改uboot

18,SSH2支持

19,设备驱动源码文件列表

21,Nmap工具

22,iperf工具的安装与使用

23,GPIO通用驱动(未完)

24,设置小灯为心跳灯

25,待整理内容列表(杂乱杂项)

烧写程序: run updatesys

Eclipse的工程建立(可视化编译软件,不用自己写makefile)

建立Eclipse开发环境(root)

建立window与Ubuntu的共享文件夹(通过VMware实现,)

设置ip(临时)

tftp

NFS

Ubuntu安装tftp(客户端与服务器)

Ubuntu安装bcompare

比对内核更新内容记录

增加SPI驱动

cygwin安装及使用说明


1,硬件厂家说明:

  • 网站支持:    http://bbs.myir-tech.com/index.php

2,常用软件

  • Windows
    • VMware
    • SecureCRT.exe
    • SecureFX.exe
    • SourceInsight
    • Tftp.exe
    • BCompare
    • SQLite Expert Personal 3
  • Linux
    • Eclipse(linux版)

 3,常用指令(未完,待整理)

  • cp

    • 功能:复制文件或目录。
    • 用法: 
      • 1    cp [选项] [-T]源文件 目标文件   
        • 例1:在当前目录下复制文件111.txt,复制后的文件名称为222.txt。
          • #cp  111.txt  222.txt
        • 例2:复制文件111.txt到/mier目录下,并更名为222.txt
          • #cp  111.txt  /mier/222.txt
      • 2    cp [选项] 源文件 目录
        • 例:复制当前目录文件111.txt和222.txt到/mier目录下
          • #cp  111.txt  222.txt  /mier
      • 3    cp [选项]  –t 目录 源文件
        • 例:复制文件111.txt到/mier目录下
          • #cp  -t  /mier  111.txt
      • 选项的具体帮助说明可以输入cp  --help查看
  • ls

    • 功能:列举指定目录或文件的相关信息
    • 用法:ls [选项]  [文件]  
      • 例1:显示当前目录下所有文件或目录(不包括以.开始的项目)
        •       #ls    
      • 例2:显示当前目录下所有文件或目录(不隐藏以.开始的项目)
        •       #ls  -a    
      • 例3:显示指定目录下的所有文件或目录
        • #ls  /mier
      • 例4:详细显示当前目录下所有文件或目录
        • #ll
        •  
      • 选项的具体帮助说明可以输入ls  --help查看
  • ps

    • 功能:显示当前时间的进程状态
    • 用法:ps [选项]
      • 例1:显示当前时间进程状态
        • #ps    
      • 例2:显示当前时间包括查询关键字(sudo)的所有进程
        • #ps  -a|grep sudo
      • 例3:显示所有程序
        • #ps  -A / #ps  -e
      • 例4:显示所有包含其他使用者的行程
        • #ps  aux
      • 选项的具体帮助说明可以输入ps  --help查看
  • kill

    • 功能:结束某个进程
    • 用法:kill [选项]  PID(注:此处的进程的PID码通过ps命令查看)
      • 例1:结束PID为3237的进程
        • #kill  3237
      • 例2:强行禁止PID为3237的进程
        • #kill  -9  3237
  • cd

    • 功能:跳转到某个目录下
    • 用法:cd  [目录]
      • 例1:跳转到目录为/mier/tool的目录下
        •  #cd  /mier/tool
      • 例2:返回到上一层
        • #cd ..
      • 例3:返回到上二层
        • #cd ../..
      • 例4:返回到首层
        • #cd /
  • rm

    • 功能:删除某个文件,不能删除目录
    • 用法:rm [选项]  文件
      • 例1:删除mier目录下的111.txt文件(删除多个文件时用空格分开)
        • #rm  /mier/111.txt  (/mier/222.txt…)
        • 引申用法:rm  -rf  文件或目录
      • 例2:删除目录/mier/1
        • #rm  -rf  /mier/1
      • 例3:删除目录/mier下所有内容,不删除目录mier
        •  #rm  -rf  /mier/*
      • 选项的具体帮助说明可以输入rm  --help查看
  • mkdir

    • 功能:建立一个新的目录
    • 用法:mkdir [选项]  目录
      • 例1:建立目录mier(建立多个目录时使用空格分开)
        •  #mkdir  mier (mier2…)
      • 例2:建立多层目录mier/tool
        • #mkdir  -p  /mier/tool
      • 选项的具体帮助说明可以输入mkdir  --help查看
  • tftp

    • 功能:传输文件
    • 用法:tftp [选项]  文件  主机IP[端口]
      • 选项:
        • -g表示下载文件(get)
        • -p表示上传文件(put)
        • -l表示本地文件名(local file)
        • -r表示远程主机的文件名(remote file)
      • 例1:从主机向设备传送111.txt文件
        • tftp  -g  -r  111.txt  192.168.1.202 
      • 例2:从设备向主机传送222.txt文件
        • tftp  -p  -l  222.txt  192.168.1.202
  • ping

    • 功能:确定网络和各外部主机的状态
    • 用法:ping [选项]  [主机名或IP地址]
      • 例:查看IP为192.168.1.222的主机是否连通
        •  #ping  192.168.1.222
      • 选项的具体帮助说明可以输入ping查看
  • telnet

    • 功能:远程登录
    • 用法:telnet  远程设备IP地址
      • 例:远程登录设备IP为192.168.1.222
        •  #telnet  192.168.1.222
      • 远程设备开启telnet服务,登录成功输出:login:
  • tar

    • 功能:解压文件
    • 用法:tar [选项]  [文件]
      • 解压tar包:tar xvf  file.tar
      • 解压tar.gz:tar xzvf  file.tar.gz
      • 解压tar.bz2:tar xjvf  file.tar.bz2
  • dmesg

    • 功能:显示开机信息,显示内核缓冲区系统控制信息的工具
    • 用法:dmesg [选项]
      • 例1:打印显示后清除缓冲内的内容
        • #dmesg –c
      • 例2:将系统启动信息保存到message.txt中
        • #dmesg > message.txt
      • 选项的具体帮助说明可以输入dmesg -h查看
  • arping

    • 功能:向相邻主机发送arp请求数据包的工具
    • 用法:arping [-fqbDUAV] [-c count] [-w timeout] [-I device] [-s source] destination
      • 例1:arping命令测试局域网个主机之间的连通性,不能用于测试互联网的连通
        • #arping -I eth0 192.168.1.151 -w 5 可以连通
        • #arping -I eth0 www.baidu.com -w 5 能ping通,但是arping没有连通
      • 例2:测试局域网中某个特定的IP地址是否被占用,检测192.168.1.151是否被占用
        • #arping -I eth0 -D 192.168.1.151 -w 5
        • 返回1,表示IP被占用;返回2,表示IP未被占用。
      • 选项的具体帮助说明可以输入arping -h查看
  • passwd

    • 功能:更改用户口令
    • 用法:passwd  [选项] [用户名]
      • 例:修改当前用户密码
        • #passwd
      • 选项的具体帮助说明可以输入passwd -h查看
  • vi

    • 功能:打开编辑文件
    • 用法:vi 文件(文件具体目录)
      • 例:打开mier/tool目录下的111.txt文件
        • #vi  /mier/tool/111.txt
      • 进入文件编辑界面后,进入输入模式:输入i
      • 退出vi:按下[Esc]键;
        • 输入“:w”—保存当前文件;
        • 输入“:wq”——存盘退出;
        • 输入“:q”——直接退出;
        • 输入“:q!”——不保存直接退出
  • gedit

    • 功能:打开编辑文件,与vi功能相似
    • 用法:gedit 文件(文件具体目录)
      • 例:打开mier/tool目录下的111.txt文件
        • #gedit  /mier/tool/111.txt
  • cat

    • 功能
      • ①一次显示整个文件  cat filename
      • ②从键盘创建一个文件   cat > filename,只能创建新文件内容,不能修改
      • ③将几个文件合并为一个文件   cat file1 file2 > file
    • 用法:cat [选项]  [文件]
      • 例1:显示111.txt的内容
        • #cat  /mier/tool/111.txt
      • 例2:添加文档222.txt内容
        •  #cat > 222.txt,输入新内容
      • 例3:合并111.txt和222.txt内容到333.txt文档中
        • #cat 111.txt  222.txt  >  333.txt
  • find

    • 功能:查找目标文件位置
    • 用法:find  [目录]  [选项]  [参数] 文件
      • 例1:查找mier目录下的文件名包括11的所有文件
        • #find /mier –name 11*
  • chmod

    • 功能:改变一个或多个文件的存取模式(mode)
    • 用法:
      • ①chmod [选项] 模式[,模式]  文件
      • ②chmod [选项]  八进制模式  文件
      • 例1:使所有用户对文件111.txt都有读、写、执行的权限
        •  #chmod  777  /mier/111.txt   (只读r=4,写w=2,执行x=1,777代表rwxrwxrwx,第一个rwx表示user权限,第二个rwx表示group权限,第三个rwx表示other权限)
      • 例2:给111.txt增加写权限
        • #chmod +w 111.txt
      • 选项的具体帮助说明可以输入chmod --help查看
  • chown

    • 功能:改变一个或多个文件的所属用户
    • 用法:chown user a(将文件a的所属用户设定为user)
  • chmod

    • 功能:改变一个或多个文件的所属用户组
    • 用法:chgrp user a(将文件a的所属用户组设定为user)
  • ifconfig

    • 功能:查看和配置网络设备。
    • 用法:ifconfig  [网络设备]  [参数]
      • 例:显示网络设备信息
        • #ifconfig
        • 打印如下内容
  • echo

    • 功能:在显示器上显示一段文字,一般起到提示作用。
    • 用法:echo [选项]  [字符串]
      • 例1:显示输入字符串内容
        • #echo 111
        • 输入上述指令则在屏幕打印111
      • 例2:显示环境变量
        • #echo $PATH或者echo ${PATH}
      • 例3:显示变量内容
        •  #name=HT
        • #echo $name
        • 屏幕打印HT
        • #extraname=“$name ShenYang”
        • #echo $extraname
        • 屏幕打印HT ShenYang
        •  #extraname=’$name ShenYang’
        • #echo $extraname
        • 屏幕打印$name ShenYang
  • sync

    • 功能:将有关文件系统的存储器常驻信息送入物理介质内。Sync命令强制把磁盘缓冲的所有数据写入磁盘。
    • 用法:sync  [选项]
  • history

    • 功能:列出历史命令,“!N”调用历史命令。
  • 自动补全

    • TAB键,两次按TAB列出关联表。
  • sudo

 4,主机与设备传送文件

  •  通过网口传送文件---tftp

    • 目的: 通过文档描述方法可以完成向arm板传送文件的操作。
    • 必备软件
      • SecureCRT.exe(cmd也可以)
      • tftpd32.exe
    • 操作步骤
      • 将arm板上电,并连接以太网口,默认IP为192.168.1.239。
        • 注:如果IP不是默认的,首先通过串口连接arm板,通过串口查询arm板的IP地址(使用指令ifconfig)
      • 以arm板IP为192.168.1.236为例,使用SecureCRT软件连接arm板,具体如下图,然后点击连接。
        •  
      • 在MYD-AM335X login:后边输入root,点击回车。
      • 启动tftpd32,设置Current Directory路径为想要传送的文件目录。   设置Server interface为主机的IP。如下图所示
        •  
      • 在arm板中建立文件夹test,将文件拷贝到新建的文件夹下
        • 在SecureCRT中输入mkdir test
        • 输入ls,查看test文件夹是否建立成功
        • 建立成功后,输入命令cd test进入test文件夹
          • 注:如果向指定的文件夹下传送文件,则不需要新建文件夹,只需要进入指定文件夹下执行以下操作即可。
        • 传送文件命令:tftp –g –r  <传送的文件名>  <主机IP>
          • 例:传送123.txt文件,主机IP为192.168.1.202,输入命令 tftp –g –r 123.txt 192.168.1.202
        • 传送完毕,输入ls,查看文件夹下123.txt文件即为传送成功。
  •  通过网口传送文件---SFTP

    • 平台:安装FileZilla
    • 平台:新建站点
      •  
    • 成功连接后,拖拽文件即可。
  •  通过TF卡传送文件

    • 通过读卡器,将想要传送的文件传到TF卡中
    • 将TF卡插入到板子上
    • 使用SecureCRT连接板子(步骤同上)
    • 进入TF卡在arm板中的文件夹位置,使用命令:cd /media/mmcblk0p1/
    • 输入ls,查看文件夹下所有内容。想要传送的文件在文件夹中
    • 复制文件,使用命令:cp  <filename> <想要复制到的文件夹地址>
    • 例如:复制文件123.txt到/test文件夹下,命令为cp 123.txt /test
    • 文件复制完成,可以到test文件夹下查看文件是否复制成功。

5,安装交叉编译链

  • 准备工作

    • Linux ubuntu1204虚拟机
    • V07-gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux.tar.bz2
  • 操作步骤

    • 将编译链copy并解压到用户目录 
      •  
    • 安装必要的工具
      • #apt-get install build-essential git-core libncurses5-dev
      • #apt-get install flex bison texinfo zip unzip zlib1g-dev gettext
      • # apt-get install gperf libsdl-dev libesd0-dev libwxgtk2.6-dev
      • # apt-get install uboot-mkimage
      • # apt-get install g++ xz-utils
    • 设置环境变量:(在gedit /etc/bash.bashrc文件最后加入如下语句)
      •  
    • 使环境变量立即生效: source /etc/bash.bashrc
    • 验证(查看)环境变量: echo $PATH

 6,编译uboot

  • 准备工作

    • Linux ubuntu1204虚拟机
    • 安装好交叉编译链,并完成环境变量设置
    • u-boot.tar.bz2
    • V07-gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux.tar.bz2
  • 操作步骤

    • 获取root权限    sudo su
    • 解压u-boot.tar.bz2(tar jxvf xxx),并进入uboot根目录
    • #make CROSS_COMPILE=arm-linux-gnueabihf- distclean
    • #make CROSS_COMPILE=arm-linux-gnueabihf- myd_am335x_hdmi720p_config(这里以编译使用7.0LCD的u-boot为例)
    • #make CROSS_COMPILE=arm-linux-gnueabihf-
    • 等待编译完成。编译成功后,在当前目录下生成启动代码映像MLO和u-boot.img文件。

 7,编译linux

  • 准备工作

    • Linux ubuntu1204虚拟机
    • 安装好交叉编译链,并完成环境变量设置
    • linux-3.2.0-V07.tar.bz2
    • V07-gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux.tar.bz2
  • 操作步骤

    • 获取root权限    sudo su
    • 安装必要的工具
      • # apt-get install uboot-mkimage
      • # apt-get install ncurses-dev
    • 解压linux-3.2.0-V07.tar.bz2(tar jxvf xxx),并进入linux源码根目录
    • #gedit Makefile,进入如下界面
      •  
    • 画红框处按照上图更改,CROSS_COMPILE ?=arm-linux-gnueabihf- ,更改后点击保存,关闭该界面
    • #make distclean
    • 装载配置文件到根目录.config(下列多选一)
      • 原厂配置:    #make     myd_am335x_defconfig
      • 定制配置:    #make     ddht_am335x_defconfig(或myd_am335x_ddht_config)
    • #make uImage
    • 等待编译完成。编译成功后,在linux-3.2.0/arch/arm/boot目录下生成uImage文件。

8,生成文件系统

  • 准备工作

    • Linux ubuntu1204虚拟机
    • myd-am335x_rootfs-V07.tar.bz2
    • 如果需要自行编译busybox,需要安装编译链(与编译系统相同)
      • gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux.tar.bz2
  • 操作步骤

    • 获取root权限    sudo su
    • 解压myd-am335x_rootfs-V07.tar.bz2(tar jxvf xxx)
    • 复制必要的工具到指定的目录(例子中/media/cdrom/03-Tools为光盘中工具的目录,< WORK DIR >是文件需要复制到的目标文件夹目录)
      • # cp /media/cdrom/03-Tools/mkfs.ubifs    <WORK DIR>
      • # cp /media/cdrom/03-Tools/ubinize          <WORK DIR>
      • # cp /media/cdrom/03-Tools/ubinize.cfg    <WORK DIR>
    • 如果某个工具没有可执行的权限,需要使用 chmod 命令给它添加可执行的权限,比如:# chmod +x <WORK DIR>/ubinize
    • 制作文件系统
      • # cd   <WORK DIR>
      • # ./mkfs.ubifs -r myd-am335x_rootfs -m 2048 -e 126976 -c 3992 -o ubifs.img
      • # ./ubinize -o ubi.img -m 2048 -p 128KiB -s 512 -O 2048 ubinize.cfg
      • 执行完成后,在当前目录生成ubi.img文件
      • (注意:由于此步骤指令复杂,建议通过脚本来实现.)
    • 上述步骤都成功安装和编译完成后,u-boot编译产生的MLO和u-boot.img文件,编译内核产生的uImage文件以及制作文件系统生成的ubi.img文件即为更新linux系统需要的文件。

9,IP/MAC地址修改

  • SHELL方案

    • 通过串口或网口(telnet),来编辑如下文件
      • 指令: vi /etc/network/interfaces
    • 如下图所示
    • 重启系统,指令:reboot
  • 程序方案

    • 通过程序修改文件vi /etc/network/interfaces后重启网卡服务,代码暂略

10,如何设置程序上电后自动启动

  • (V5版本)在etc/rc.local(V7版本)在etc/inti.d/rcS文件中增加应用程序或脚本,如下图,表示开机自启动telnetd和tftp服务.

 
11,开发板中的linux如何修改用户名和密码

  • Root用户增加/修改密码,指令:passwd,如下图:
    •  
  • 增加其他用户:不支持相关功能指令
  • 删除密码,使用指令:passwd, 在输入密码栏不需输入密码,直接回车即可。
  • 实际修改的文件: etc/shadow

12,linux服务器获取客户端MAC地址

  • Shell方式:    arping 192.168.1.235  -c 1;

13,开启telnet(更新厂家busybox)

  • telnet服务的相关操作:telnet的服务一般叫做:telnetd
  • 原来米尔科技的AM3352开发板是不带telnet服务的 ,需要写入开启;
  • 在米尔论坛里下载busybox,通过U盘拷贝到开发板上,并同步;
    • cp busybox /bin
    • sync
    • reboot
  • 重启开发板;
  • 找到telnet服务路径
    • which telnetd
    • 一般在“/usr/sbin/telnetd”下;
  • 在启动项里增加telnetd服务,实现开机启动;
    • vi /tc/rc.local
    • #!/bin/sh
    • # Add your script here to run automatically after boot...
    • /usr/local/bin/telnetd(增加这一行)
  • 保存并重启开发板;
  • 通过ps aux 查看是否有telnet 服务启动;
  • 要停止telnet服务,只能修改上述配置文件,注释掉telnet服务路径;

14,RTC

  • 利用telnet或debug调试端口进入开发板;
  • 查看linux系统时间:date,查看硬件RTC时间:hwclock --show
  • 修改linux系统时间:以一种格式为例:date 月日时分年.秒
    • hwclock -w,同步系统和RTC时钟
  • 修还etc/init.d/rcS,增加启动项/sbin/hwclock -s
    • vi etc/init.d/rcS 在
    • export PATH runlevel prevlevel  
    • /sbin/hwclock -s(增加一行)
  • reboot重启;

15,增加arp和arping服务

  • 虚拟机下载busybox源码
  • 修改Makefile的编译路径,修改配置文件的编译路径(嵌入式Linux开发实用教程161页有详细说明)
  • 虚拟机下重新编译,安装
  • 把虚拟机下的sbin,bin下的arp文件直接拷贝到板子相应路径即可.

16,将按键驱动改为串口驱动

  • 打开内核的文件:
    • $vi arch/arm/mach-omap2/board-am335xevm.c
  • 添加uart4、uart5功能脚定义代码(如果没有)。
/* Module pin mux for uart3 */
static struct pinmux_config uart3_pin_mux[] = 
{
{
"spi0_cs1.uart3_rxd",
OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLUP
},
{
"ecap0_in_pwm0_out.uart3_txd",
OMAP_MUX_MODE1 | AM33XX_PULL_ENBL
},
{
NULL,
0
},
};

/* Module pin mux for uart4 */
static struct pinmux_config uart4_pin_mux[] = 
{
{
"uart0_ctsn.uart4_rxd",
OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLUP
},
{
"uart0_rtsn.uart4_txd",
OMAP_MUX_MODE1 | AM33XX_PULL_ENBL
},
{
NULL,
0
},
};
/* Module pin mux for uart5 */
static struct pinmux_config uart5_pin_mux[] = 
{
{
"mii1_col.uart5_rxd",
OMAP_MUX_MODE3 | AM33XX_PIN_INPUT_PULLUP
},
{
"rmii1_refclk.uart5_txd",
OMAP_MUX_MODE3 | AM33XX_PULL_ENBL
},
{
NULL, 
0
},
}
  • 添加初始化串口4、5代码(如果没有),如下蓝色部分。
static void uart3_init(int evm_id, int profile)
{
    printk("--------uart3_init\n");

    /* Configure Uart3*/
    setup_pin_mux(uart3_pin_mux);
    return;
}

static void uart4_init(int evm_id, int profile)
{
    printk("--------uart4_init\n");

    /* Configure Uart4*/
    setup_pin_mux(uart4_pin_mux);
    return;
}

static void uart5_init(int evm_id, int profile)
{
    printk("--------uart5_init\n");

    /* Configure Uart4*/
    setup_pin_mux(uart5_pin_mux);
    return;
}
  • 添加串口4、5的注册,如下蓝色代码,并注释掉can功能和keys按键功能,如下红色代码。
 {uart1_init, DEV_ON_BASEBOARD, PROFILE_ALL},
    {uart2_init, DEV_ON_BASEBOARD, PROFILE_ALL},
    {uart3_init, DEV_ON_BASEBOARD, PROFILE_ALL},
    {uart4_init, DEV_ON_BASEBOARD, PROFILE_ALL},
    {uart5_init, DEV_ON_BASEBOARD, PROFILE_ALL},
    //{d_can_init, DEV_ON_BASEBOARD, PROFILE_ALL},
    //{gpio_keys_init,DEV_ON_BASEBOARD, PROFILE_ALL},
    {gpio_led_init,DEV_ON_BASEBOARD, PROFILE_ALL},
    {NULL, 0, 0},
  • 重新编译内核,并更新系统就可以了。

17,按公司需求修改内核与文件系统

  • 修改文件系统:

    • 修改IP:                /etc/network/interface文件 
    • 添加telnetd服务:    
      • /etc/init.d/rcS尾部添加/usr/sbin/telnetd
    • 添加用户应用程序自启动
      • /etc/init.d/rcS尾部添加/xsl/rtu.sh
    • 新建xsl文件夹:        
      • mkdir xsl(用于放置项目程序及相关文件)
    • 删除HDMI和触摸板驱动:  
      • 屏蔽文件/etc/init.d/rcS的下面代码:
# insmod display device driver
if [ "$runlevel" == "S" ]; then
    if grep "hdmi" /proc/cmdline > /dev/null ; then
        insmod /lib/modules/`uname -r`/kernel/drivers/video/nxp/tda998x.ko
    elif grep "lcd7ic" /proc/cmdline > /dev/null ; then
        insmod /lib/modules/`uname -r`/kernel/drivers/input/touchscreen/ft5x0x.ko
    else
        insmod /lib/modules/`uname -r`/kernel/drivers/input/touchscreen/ti_tscadc.ko
    fi
fi
  • 删除QT应用程序
    • 屏蔽文件/etc/init.d/rcS的下面代码
-------------------------------------------
# Set the QT env
if [ -e /etc/init.d/qt.sh ];then
 /etc/init.d/qt.sh
fi
-------------------------------------------
# Start qt demo
. /etc/init.d/qt.sh
export HOME=/root
-------------------------------------------
base=fluidlauncher
pid=`/bin/pidof $base`
if [ -n "$pid" ];then
 killall $base
fi
-------------------------------------------
cd /opt/qt-4.8.5/demos/fluidlaucher/
./fluidlaucher –qws 2>/dev/null&
-------------------------------------------
  • 屏蔽文件/etc/profile的下面代码
    • . /etc/init.d/qt.sh
  • 删除/opt中的qt-4.8.5文件夹
  • 增加root用户密码(密码也为root)
    • 修改/etc/shadow
      •  
  • 修改内核

    • 删除LCD驱动:        修改/arch/arm/mach-omap2/board-am335xevm.c
    •  
    • 删除IIC驱动:        修改/arch/arm/mach-omap2/board-am335xevm.c
      • 屏蔽am335x_evm_init(void) am335x_evm_i2c_init();
    • 删除Audio驱动:    修改/arch/arm/mach-omap2/devices.c
      •  
    • 删除摄像头驱动:    修改/arch/arm/mach-omap2/devices.c
      • 屏蔽omap2_init_devices()---omap_init_camera();
    • (暂不用)增加ADC驱动(目前与触屏冲突,将不能再使用触屏功能)
    • 将CAN0_Tx与CAN0_Rx两个引脚改为开关量输出
      • 引脚定义
static struct pinmux_config gpio_led_mux[] = {
    ……
    //-----XSL-----CAN0-->KOUT
{"uart1_ctsn.gpio0_12",OMAP_MUX_MODE7|AM33XX_PIN_OUTPUT},
        {"uart1_rtsn.gpio0_13",OMAP_MUX_MODE7| AM33XX_PIN_OUTPUT},
//-------------
    ……
};
  • 引脚导出
static void gpio_led_init(int evm_id, int profile){
……
    //-----XSL-----GPIO EXPORT
    gpio_request(GPIO_TO_PIN(0, 12), "GPIO-OUT1");
    gpio_direction_output(GPIO_TO_PIN(0, 12),1);
    gpio_export(GPIO_TO_PIN(0, 12), 0);
    gpio_request(GPIO_TO_PIN(0, 13), "GPIO-OUT2");
    gpio_direction_output(GPIO_TO_PIN(0, 13),1);
    gpio_export(GPIO_TO_PIN(0, 13), 0);
    //-------------
}
  • 将IIC0_SDA与IIC0_SDL两个引脚改为开关量输入
/* pinmux for gpio based key */
static struct pinmux_config gpio_keys_pin_mux[] = {
{"mii1_col.gpio3_0",OMAP_MUX_MODE7|AM33XX_PIN_INPUT},
{"rmii1_refclk.gpio0_29",OMAP_MUX_MODE7|AM33XX_PIN_INPUT},
//-----XSL-----(IIC0-->KEY)
{"i2c0_sda.gpio3_5",    OMAP_MUX_MODE7| AM33XX_PIN_INPUT},
{"i2c0_scl.gpio3_6",    OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},    
//-------------
{NULL, 0},
};
//-----XSL-----删除按键驱动(开发板按键与串口5冲突)
//-------------另:IIC0->KEY,重新开启KEY驱动
{gpio_keys_init,  DEV_ON_BASEBOARD, PROFILE_ALL},
//-------------
  • GPIO做文件输出(执行后就会在文件下有相应文件)
(/sys/class/gpio/gpio101  /sys/class/gpio/gpio 102)
static void gpio_keys_init(int evm_id, int profile)
{
    int err;

    setup_pin_mux(gpio_keys_pin_mux);
    err = platform_device_register(&gpio_keys);
    if (err)
        pr_err("failed to register gpio key device\n");
    //-----XSL-----GPIO OUT
    gpio_request(GPIO_TO_PIN(3, 5), "GPIO-KIN1");
    gpio_direction_input(GPIO_TO_PIN(3, 5));
    gpio_export(GPIO_TO_PIN(3, 5), 0);
    gpio_request(GPIO_TO_PIN(3, 6), "GPIO-KIN2");
    gpio_direction_input(GPIO_TO_PIN(3, 6));
    gpio_export(GPIO_TO_PIN(3, 6), 0);
    //-------------
}
  • 终端测试:
    • 查看状态---cat value
  • 修改uboot

    • 更改文件boardmyirmyd_am335xmux.c
      • 屏蔽掉原背光引脚配置结构体
        • 修改static struct module_pin_mux myir_backlight_mux[]…
      • 增加继电器相关配置结构体
        • 增加static struct module_pin_mux relay_pin_mux[] …
      • 屏蔽原程序中用到我们电路板继电器的相关引脚配置结构体
        • 修改static struct module_pin_mux spi0_pin_mux[] …
      • 增加继电器相关配置函数
        • void enable_relay_pin_mux(void)…
    • 更改文件boardmyirmyd_am335xevm.c
      • 增加继电器驱动函数
        • 增加void relay_init(void)…
        • 调用s_init()relay_init()
      • 屏蔽背光初始化
        • 屏蔽s_init()myir_init_backlight()
    • 更改includeconfigsmyd_am335x.h(与项目无关,厂家兼容android)
      • "nand_img_siz=0x400000\0" \改为"nand_img_siz=0x500000\0" \
      • "root=${nand_root} noinitrd " \改为"root=${nand_root} init=/init " \

18,SSH2支持

  • 07版本内核中自带SSH2的支持,可以完全替代telnet,但必须要设置密码.
  • 关闭指令:
    • (无用)/etc/init.d/S50sshd stop
    • /etc/init.d/ S50dropbear stop
  • 开启指令
    • (无用)/etc/init.d/S50sshd start
    • /etc/init.d/ S50dropbear start
  • 删除整个功能:
    • 删除/etc/init.d/ S50sshd
    • 删除/etc/init.d/ S50dropbear

19,设备驱动源码文件列表

  • I2C               
    • drivers/i2c/busses/i2c-omap.c
  • 按键             
    • drivers/input/keyboard/gpio_keys.c 
  • LED灯         
    • drivers/leds/leds-gpio.c T
  • TF/SD卡      
    • cd ers/mmc/host/omap_hsmmc.c
  • CAN
    • drivers/net/can/dev.c 
  • 网络
    • drivers/net/ethernet/ti/cpsw_ale.c   
    •  drivers/net/ethernet/ti/cpsw.c   
    • drivers/net/ethernet/ti/davinci_cpdma.c   
    • drivers/net/ethernet/ti/davinci_mdio.c 
  • PWM
    •  drivers/pwm/pwm.c 
  • RTC
    • drivers/rtc/rtc-omap.c 
  • SPI
    • drivers/spi/spi-omap2-mcspi.c 
  • 串口/485
    • drivers/tty/serial/omap-serial.c 
  • 触摸屏
    • drivers/input/touchscreen/ti_tscadc.c 
  • USB OTG
    • drivers/usb/otg/otg.c   
    • drivers/usb/otg/nop-usb-xceiv.c 
  • USB Host
    • drivers/usb/core/* 
  • USB WIFI
    • drivers/net/wireless/zd1201.c 
  • NandFlash
    • drivers/mtd/nand/* 
  • Audio音频
    • Sound/soc/codecs/sgtl5000.c 
  • LCD显示屏
    • video/backlight/lcd.c 
  • HDMI
    • drivers/video/nxp/tda998x_drv.c

 3.20     文件系统目录列表

目录

文件内容说明

/bin

系统执行命令集目录,单用户下可被操作的命令

/boot

Linux内核文件及开机菜单所需配置文件

/etc

系统配置文件,各个服务的起始文件,只有root权限可以修改

init.d:所有服务的默认启动脚本

rcS:自定义开机启动服务

/home

系统默认的用户主文件夹,创建一个一般用户时,用户文件夹都会规范到这里来

/init

init进程是内核引导过程完成时创建的第一个进程。Linux使用了init进程来对组成Linux的服务和应用程序进行初始化。

/lib

这个目录里存放着系统最基本的动态链接共享库,其作用类似于Windows里的.dll文件。几乎所有的应用程序都须要用到这些共享库。/lib/modules:内核相关模块(驱动程序)

/media

挂载的可删除设备,如移动硬盘,光盘,sd,TF卡等

/mnt

用于暂时挂载某个设备,如U盘

/opt

该目录是可选的软件包安装目录,有些软件包我们可以将它安装在该目录中。

/proc

操作系统运行时,进程(正在运行中的程序)信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。/proc目录是伪装的文件系统proc的挂载目录,proc并不是真正的文件系统。因此,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。也就是说,这个目录的内容不在硬盘上而是在内存里

/proc/cpuinfo:关于处理器的信息,如类型、厂家、型号和性能等。比如cat /proc/cpuinfo

/proc/devices:当前运行内核所配置的所有设备清单

/proc/filesystems:当前运行内核所配置的文件系统

/proc/dma:当前正在使用的DMA通道

/proc/interrupts:正在使用的中断和曾经有多少个中断

/proc/ioports:当前正在使用的I/O端口

/root

Linux超级权限用户(系统管理员)root的主目录

/run

 

/sbin

大多数涉及系统管理的命令都存放在该目录中,它是超级权限用户root的可执行命令存放地,普通用户无权限执行这个目录下的命令,凡是目录sbin中包含的命令都是root权限才能执行的。

/tmp

该目录用于存放临时文件,有时用户运行程序的时候,会产生一些临时文件。/tmp就是用来存放临时文件的。/var/tmp目录和该目录的作用是相似的

/usr

该目录是系统存放程序的地方,比如普通命令、帮助文件、安装的软件等。这个目录下有很多的文件和目录。当我们安装一个Linux发行版官方提供的软件包时,大多安装在这里。当有涉及服务器的配置文件时,会把配置文件安装在/etc目录中。/usr目录下包括涉及字体目录/usr/share/fonts、帮助目录/usr/share/man或/usr/share/doc等

/usr/bin:这个目录是可执行程序的目录,普通用户就有权限执行。当我们从系统自带的软件包安装一个程序时,他的可执行文件大多会放在这个目录。相似的目录是/usr/local/bin目录。有时/usr/bin中的文件是/usr/local/bin的链接文件

/usr/sbin:这个目录也是可执行程序的目录,但大多存放涉及系统管理的命令。只有root权限才能执行,相似目录是/sbin或/usr/local/sbin或/usr/X11R6/sbin等

/usr/local:这个目录一般是用来存放用户自编译安装软件的存放目录。一般是通过源码包安装的软件,如果没有特别指定安装目录的话,一般是安装在这个目录中

/usr/lib:该目录和/lib目录相似,是库文件的存储目录。存放一些常用的共享库

/usr/share:该目录用于存放系统共用的东西,比如/usr/share/fonts是字体目录,是用户都共用的

/var

该目录的内容是经常变动的,/var下有/var/log目录用来存放系统日志的目录。

/var/cache:存放应用程序运行时产生的暂存文件

/var/lib:程序本身执行的过程中,需要使用的数据文件存放的目录。在此目录下的软件应该要有各自的目录

/var/lock:用于给某个设备或资源加锁

/var/log:用于存放日志,如登陆信息日志:/var/log/wtmp

/var/run:用于存放某些已启动的程序或服务的PID,保存到下次引导前有效的关于系统的信息文件

/var/spool:用于存放假的脱机目录,如打印机、邮件、代理服务器

/var/www:目录用来定义Apache服务器站点存放目录

目录

内容说明

/bus

/bus/usb/00[1-2]:usb设备的节点号

/buzzer_ctl

蜂鸣器控制

/ block

linux对于ext2(ext3类似)文件系统来说,硬盘分区首先被划分为一个个的block,同一个 ext2文件系统上的每个block大小都是一样的。但是对于不同的ext2文件系统,block的大小可以有区别。典型的block大小是1024 bytes或者4096 bytes。这个大小在创建ext2文件系统的时候被决定,它可以由系统管理员指定,也可以由文件系统的创建程序根据硬盘分区的大小,自动选择一个较合理的值。一个硬盘分区上的block计数是从0开始的,并且这个计数对于这个硬盘分区来说是全局性质的

/ console

linux控制台程序

/ crypto

内核加密应用程序的接口

/ disk/yb-id

Linux内核的块设备驱动有能力读取磁盘的序列号:#ls /dev/disk/by-id

/disk/yb-uuid

磁盘设备的UUID标识代码:#ls /dev/disk/by-uuid

/dev/mem

物理内存的全镜像。可以用来访问物理内存

/dev/kmem

kernel看到的虚拟内存的全镜像。可以用来访问kernel的内容. 作用:前者用来访问物理IO设备,比如X用来访问显卡的物理内存,或嵌入式中访问GPIO。用法一般就是open,然后mmap,接着可以使用map之后的地址来访问物理内存。这其实就是实现用户空间驱动的一种方法。

后者一般可以用来查看kernel的变量,或者用作rootkit之类的。参考1和2描述了用来查看kernel变量这个问题

/ fb,fb0

控制屏幕显示端口;

fbo控制屏幕上每一点的颜色;

/dev/full

(常满设备)是一个特殊设备文件,总是在向其写入时返回设备无剩余空间(错误码为ENOSPC),读取时则与/dev/zero相似,返回无限的空字符(NULL, ASCII NUL, 0x00)。这个设备通常被用来测试程序在遇到磁盘无剩余空间错误时的行为

/ I2c

 

/dev/initctl

实际上是一个FIFO设备,跟init有关(切换运行级别时用于新init与原init通信)

/ Input

是linux kernel中与部分外围器件驱动联系比较紧密的模块,常用于Sensor,TP(touch panel),power key等器件的驱动。这类模块有个共同特点:字符设备,且数据量都不大,比如sensor一般最多只有xyz三个维度的数据。
      整体来看,Input子系统有一个主线,那就是题目中这三个结构体的关系(下面简称为三方关系),input_dev对应于实际的device端,input_handler从名字也可以猜出来是对device的处理。“处理”这个词语不单单指的是对device数据的处理,比如report等;它其实可以包括系统在该device事件发生时想做的任何动作。至于input_handle,它是连接input_dev与input_handler的,该设计后面也会详细分析。在这里请记住,我们最终的目的是,通过input_dev,可以遍历所有与它有关的input_handler;通过input_handler,也可以遍历所有与它有关的input_dev

 

/ MTD

MTD(memory technology device内存技术设备)是用于访问memory设备(ROM、flash)的Linux的子系统。MTD的主要目的是为了使新的memory设备的驱 动更加简单,为此它在硬件和上层之间提供了一个抽象的接口。MTD的所有源代码在/drivers/mtd子目录下。CFI接口的MTD设备分为四层 (从设备节点直到底层硬件驱动),这四层从上到下依次是:设备节点、MTD设备层、MTD原始设备层和硬件驱动层。
    MTD字符驱动程序允许直接访问flash器件,通常用来在flash上创建文件系统,也可以用来直接访问不频繁修改的数据。
    MTD块设备驱动程序可以让flash器件伪装成块设备,实际上它通过把整块的erase block放到ram里面进行访问,然后再更新到flash,用户可以在这个块设备上创建通常的文件系统.

系统自己实现的mtd分区所对应的字符设备(将mtd设备分成多个区,每个区就为一个字符设备),其里面添加了一些ioctl,支持很多命令,如MEMGETINFO,MEMERASE等。

而mtd-util中的flash_eraseall等工具,就是以这些ioctl为基础而实现的工具,实现一些关于Flash的操作

/ mtdblock

是Nand Flash驱动中,驱动用add_mtd_partitions( )添加MTD设备分区(其实就是将mtd设备进行不同的分区,当mtd设备还是一样的,所以mtdblock分区与mtd分区肯定是对应的),而生成的对应的块设备。根据以上内容,也就更加明白,为什么不能用nandwrite,flash_eraseall,flash_erase等工具去对/dev/mtdblockN去操作了。因为/dev/mtdblock中不包含对应的ioctl,也就没有定义对应的命令,不支持这么操作虚拟终端

/tty

tty[1-9],tty[10-19],tty[20-29],tty[30-39],tty[40-49],tty[50-59],tty[60-69]

端口文件

/ttyo[0-5]

485串口端口文件,COM1-COM4

/rtc

兼容PC系统的RTC,对非x86结构支持不完整;

所有的pc系统都内建实时时钟。这个时钟在系统关机之后可以保存时间和日期。特别之处,用户进程可以通过/dev/rtc的read( ) 或是select( )监视中断,同时他会阻塞/停止用户进程,直到下一个中断接受

/rtc0

系统框架的一部分,支持多种RTC, RTC Class结构包含多种RTCs,它的范围从内部集成RTC到使用I2C、SPI或是其他总线与CPU主机通讯的独立芯片

/ loop[0-7]

在Linux中,有一种特殊的块设备叫loop device,这种loop device设备是通过影射操作系统上的正常的文件而形成的虚拟块设备。因为这种设备的存在,就为我们提供了一种创建一个存在于其他文件中的虚拟文件系统的机制。

关联之后对loop可以格式化,实际就是对那个文件进行某种操作,能够让这个文件像磁盘一样被mount,并且使用;做为块设备挂载使用;

第一步:create a file with 'dd' command:
dd if=/dev/zero of=FS_on_file bs=1k count=10000
这样就在当前目录下创建了一个10Mb的文件"FS_on_file"

第二步:使用losetup命令创建一个loop device
losetup /dev/loop0 FS_on_file

第三步:创建一个文件系统
mkfs -t ext3 /dev/loop0
第四步:挂载这个文件系统
(the mount point '/mnt/FS_file0' has been created before by 'mkdir'):
mount /dev/loop0 /mnt/FS_file0
最后:如果要删除刚才创建的这些对象,依次执行如下步骤:
$ umount /dev/loop0
$ losetup -d /dev/loop0
$ rm FS_on_file

 


21,Nmap工具

  • Nmap是安装到虚拟机linux的工具,功能强大,能够进行网络扫描等功能,具体应用方法请问度娘.
    • 例: nmap –sS 192.168.1.232 指令可以列出232设备的目前开放的网络端口.

22,iperf工具的安装与使用

  • Iperf  是一个网络性能测试工具。Iperf可以测试TCP和UDP带宽质量。由于Iperf工具是基于服务器和客户端的工作模式,所以在进行测试之前应先在目标计算机上启动服务器端程序,Iperf客户端和服务器端程序其实都是同一个程序,只是使用了不同的命令选项而已。
  • 准备:
    • 交叉编译链:arm-linux-gnueabihf
    • 交叉编译链安装位置: /usr/local/arm/CROSSCROSS-335x-MYD-V7/bin
  • 安装与移植:
    • 1.下载iperf-2.0.4版本,并在虚拟机中将程序解压
    • 2. 进入iperf-2.0.4目录下,执行配置文件
      • # ./configure
      • #make
      • #make install
    • 3. 根据本系统的编译链重新编译iperf
      • #make distclean
      • #./configure --host=arm-linux-gnueabihf CC=/usr/local/arm/CROSSCROSS-335x-MYD-V7/bin/arm-linux-gnueabihf-gcc  CXX=/usr/local/arm/CROSSCROSS-335x-MYD-V7/bin/arm-linux-gnueabihf-g++。
    • 4. 将通过./configure产生的config.h文件使用指令gedit config.h打开。
      • 将#define HAVE_MALLOC 0   改成   #define HAVE_MALLOC 1
      •   /*#undef HAVE_QUAD_SUPPORT*/   改成  #define HAVE_QUAD_SUPPORT 1
      •   #define malloc rpl_malloc   改成  /*#undef malloc*/
      • 修改完成后,保存退出
    • 5. #make,编译完成后,在/src目录下生成iperf可执行文件
    • 6. 这样编译过的iperf可以移植到arm板
    • 在arm板移植到的目录下执行./iperf –c <host ip>  (注:这里arm板作为客户端)
      • Iperf参数
      • 最常用:
        •  服务器端: iperf –s
        • 客户端:./iperf –c <host ip>
  • 测试端口传送带宽
    • (注:如果连接不成功,将防火墙关闭,ubuntu系统关闭防火墙:#ufw disable)
  • 服务器端参数:
    • -s 以server模式启动,eg:iperf –s 。Server端为数据的接收端。
    • -D 以服务方式运行ipserf,eg:iperf -s -D
    • -R 停止iperf服务,针对-D,eg:iperf -s -R
    • -o <filename> 重定向输出到指定文件。
    • -c,--client <hostname/IP> 如果Iperf运行为服务器模式,则可利用-c参数指定一个客户端,本机将接受指定客户端的连接,但不支持UDP协议。
    • -P,--parallel #  设置Iperf服务模式下的最大连接数,默认值为0,表示不限制连接数量。
  • 客户端参数:
    • -b,--bandwidth 指定客户端通过UDP协议发送信息的带宽,默认值为1Mbit/s
    • -c,--client <hostname/IP> 指定Iperf服务器的主机名和IP地址  
    • -d,--dualtest 同时进行双向传输测试
    • -n,--num 指定传输的字节数,eg:iperf -c 222.35.11.23 -n 100000
    • -r,--tradeoff 单独进行双向传输测试
    • -t,--time 指定Iperf测试时间,默认10秒,eg:iperf -c 222.35.11.23 -t 5
    • -L,--listenport 指定一个端口,服务器将利用这个端口与客户机连接
    • -P, --parallel 设置Iperf客户端至Iperf服务器的连接数,默认值为1
    • -S, --tos  设置发出包的类型,具体类型请参阅man文档
    • -F 指定需要传输的文件
    • -T 指定ttl值
  • 通用参数
    • -f [kmKM] 分别表示以Kbits, Mbits, KBytes, MBytes显示报告,默认以Mbits为单位,eg:iperf -c 222.35.11.23 -f K
    • -i sec 以秒为单位显示报告间隔,eg:iperf -c 222.35.11.23 -i 2
    • -l 缓冲区大小,默认是8KB,eg:iperf -c 222.35.11.23 -l 16
    • -m 显示tcp最大mtu
    • -o 将报告和错误信息输出到文件eg:iperf -c 222.35.11.23 -o ciperflog.txt
    • -p 指定服务器端使用的端口或客户端所连接的端口eg:iperf -s -p 9999;iperf -c 222.35.11.23 -p 9999
    • -u 使用udp协议
    • -w 指定TCP窗口大小,默认是8KB
    • -B 绑定一个主机地址或接口(当主机有多个地址或接口时使用该参数)
    • -C 兼容旧版本(当server端和client端版本不一样时使用)
    • -M 设定TCP数据包的最大mtu值
    • -N 设定TCP不延时
    • -V 传输ipv6数据包

23,GPIO通用驱动(未完)

  • 文件系统说明:
    • /sys/class/gpio                            文件系统GPIO子路径
    • /sys/class/gpio/export                        只写文件,用于暴露一个GPIO
    • /sys/class/gpio/gpio<number>                特定GPIO的子文件夹
    • /sys/class/gpio/gpio<number>/direction    读写文件,GPIO方向in或out
    • /sys/class/gpio/gpio<number>/value        读写文件,GPIO数值0或1
    • /sys/class/gpio/gpio<number>/edge        读写文件,上升沿与下降沿

24,设置小灯为心跳灯

  • 此设计为linux系统心跳灯,灯的闪烁不能手动更改
  • 手动(或程序)操作LED后就,小灯退出心跳模式.
  • 再次启动led为心跳灯
    • 进入sys/class/leds/XXX/
    • echo heartbeat > trigger

25,待整理内容列表(杂乱杂项)

  • 烧写程序: run updatesys

  • Eclipse的工程建立(可视化编译软件,不用自己写makefile)

    • 编译pthread_create()创建线程编译出错(pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a),解决:
      • Project->Properties->C/C++ Build->Settings->GCC C++ Linker->Libraries
        • 在Libraries(-l)中添加pthread即可
        • 在Libraries search path(-L)中添加crypto即可
    • 在编译SQLite3的时候出现错误,原因在于需要加载库.        
      • Project->Properties->C/C++ Build->Settings->GCC C++ Linker->Libraries
        • 在Libraries(-l)中添加dl即可
  • 建立Eclipse开发环境(root)

    • 安装主框架:apt-get install eclipse
    • 汉化:http://www.eclipse.ory/babel/downloads.php下载汉化包(已下载到共享文件夹)
      • sudo unzip BabelLang....zip
      • sudo mv ./eclipse/plugins/* /usr/lib/eclipse/plugins/
      • sudo mv ./eclipse/features/* /usr/lib/eclipse/features/
      • sudo rm -r eclipse
    • 安装eclipse CDT(C语言支持):apt-get install eclipse-cdt
    • 配置:配置将gcc---arm-linux-gcc
    • 下载gdb:http://ftp.gnu.org/gnu/gdb/
    • 解决程序中的中文乱码(windows->GBK,要让Ubuntu支持GBK编码)
      • *修改/var/lib/locales/supported.d/local文件,在文件添加
        • zh_CN.GBK GBK
        • zh_CN.GB2312 GB2312
      • *执行sudo dpkg-reconfigure --force locales
      • *eclipse支持修改:属性->资源中,文本文件编码->GBK,新的文本文件行定界符->windows
  • 建立window与Ubuntu的共享文件夹(通过VMware实现,)

    • 在WMware中设置共享文件夹路径(本文件夹下的sharefile)
    • 在Ubuntu下终端中挂载共享文件(/mnt/hgfs)
      • sudo apt-get install open-vm-dkms(如果已安装可省略)
      • sudo mount -t vmhgfs .host:/ /mnt/hgfs
    • 自启动挂载(sudo gedit ...解决权限问题)
      • 在/etc/init.d/open-vm-tools末端增加一行:
        • sudo mount -t vmhgfs .host:/ /mnt/hgfs
      • 在sudo gedit /etc/init.d/rc.local加入
        • sudo mount -t vmhgfs .host:/ /mnt/hgfs
  • 设置ip(临时)

    • ifconfig eth0 192.168.1.250 netmask 255.255.255.0
  • tftp

    • 向服务器下载文件:tftp -g -r 文件名 服务器IP
  • NFS

    • 虚拟机在VMware上设置网卡为桥接模式
    • 设置Ubuntu的网络IP地址等信息(与Windows为同网段,但是不同地址).
    • PC安装nfs服务器:
      • apt-get install nfs-kernel-server
      • apt-get install portmap
    • PC配置: 修改/ect/exports,在末尾增加: 
      • /mnt/ok6410 *(rw,sync,no_root_squash)
    • 重启NFS服务:
      • sudo /etc/init.d/portmap restart
      • sudo /etc/init.d/nfs-kernel-server restart
    • 挂载嵌入式的文件系统(ok6410sh):
      • mount -t nfs -o nolock 192.168.1.231:/mnt/ok6410 /xsl_nfs
  • Ubuntu安装tftp(客户端与服务器)

    • 安装
      • udo apt-get install tftp-hpa tftpd-hpa xinetd
    • 配置
      • sudo vim /etc/default/tftpd-hpa
      • TFTP_USERNAME=”tftp”
      • TFTP_ADDRESS=”0.0.0.0:69″
      • TFTP_DIRECTORY=”tftp根目录” #服务器目录,需要设置权限为777,chomd 777
      • TFTP_OPTIONS=”-l -c -s”
    • 重启
      • sudo service tftpd-hpa restart
  • Ubuntu安装bcompare

    • 资源bcompare_3.38.16340.tar.gz
    • 解压得到目录:bcompare-3.3.8.16340.tar.gz 和文件 keygen
      • tar –zxvf bcompare-3.3.8.16340.tar.gz
    • 拷贝keygen到bcompare-3.3.8.16340,并赋予执行权限
      • cp keygen bcompare-3.3.8.16340/  
      • chmod +x bcompare-3.3.8.16340/keygen 
    • 运行./keygen,为BCompare打上patch并生成license
      •  
    • 运行./install.sh安装
    • 运行bcompare启动,然后贴入第2步生成的license 大功告成。
  • 比对内核更新内容记录

    • 更新电容触屏驱动
      • \arch\arm\mach-omap2\include\mach\board-am335xevm.h
        • ft5x0x相关
      • \arch\arm\mach-omap2\include\mach\board-am335xevm.c
        • ft5x0相关
  • 增加SPI驱动

    • 修改配置
      • make ARCH=arm menuconfig
      • Device Drivers    
        • SPI support    
        •     <*>    McSPI driver for OMAP
        •     <*>User mode SPI device driver support
    • 在 arch/arm/mach-omap2/board-am335xevm.c 文件里添加 spi1 的引脚配置
      • 在myd-am335x上,spi1 的引脚跟 McASP 的引脚复用,所以用 spi1 就不能使用 McASP
      • 代码(参考文件:arch/arm/mach-omap2/Mux33xx.c;  mux.h)
//-----XSL-----add SPI 

//pinmux for spi

static struct pinmux_config spi_pin_mux[] = {

    {"mcasp0_aclkx.spi1_sclk", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL | AM33XX_INPUT_EN },

        {"mcasp0_fsx.spi1_d0", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL | AM33XX_PULL_UP | AM33XX_INPUT_EN},

        {"mcasp0_axr0.spi1_d1", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL | AM33XX_INPUT_EN},

        {"mcasp0_ahclkr.spi1_cs0", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL | AM33XX_PULL_UP | AM33XX_INPUT_EN},

        {NULL, 0},

};

//SPI info

static struct spi_board_info am335x_spi1_slave_info[]={

    {

        .modalias    =    "spidev",    //

        .max_speed_hz    =    1000000,    //max speed

        .bus_num    =    2,        //use spi1

        .chip_select    =    0,        //use cs

    },

};

//SPI init

static void spi_init(int evm_id,int profile)

{

    setup_pin_mux(spi_pin_mux);

    spi_register_board_info(am335x_spi1_slave_info,ARRAY_SIZE(am335x_spi1_slave_info));

    return;

}

//初始化

static struct evm_dev_cfg myd_am335x_dev_cfg[] = {

……

//-----XSL-----屏蔽音频,增加SPI(与SPI1接口冲突)

//    {mcasp0_init,   DEV_ON_BASEBOARD, PROFILE_ALL},

            {spi_init,     DEV_ON_BASEBOARD, PROFILE_ALL},

//-------------

……

}

cygwin安装及使用说明

发布了28 篇原创文章 · 获赞 81 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/xslxhn/article/details/83346483
今日推荐