第一次接触ARM板,型号是MC-B813,厂家给的资料实在不适合初用ARM的我去看。写个博客记录一下:
一、ARM板通过网口连接windows电脑(Telnet登陆)
1.我们需要把ARM板上的网口通过网线插到windows电脑上。
2.设置windows电脑ip地址,我的是win10家庭中文版,控制面板——网络和共享中心——点开有线连接选
项——属性——Internet协议版本4——属性——使用下面的IP地址。
例如我ARM板的IP地址为192.168.0.15,我自己电脑中IP地址就写为192.168.0.1。子网掩码255.255.255.0,
默认网关好像不重要(客服给的10.10.80.1).
3.需要打开windows中Telnet客户端,控制面板——程序和功能——windows中启用或关闭功能——Telnet
客户端打勾!
4.配置好了,cmd进入命令提示符,输入telnet 和ARM板的ip地址,我的是:
telnet 192.168.0.15
二、TFTP传输文件到ARM板中
1.需要打开windows中TFTP客户端,控制面板——程序和功能——windows中启用或关闭功能——TFTP
客户端打勾!(似乎记得还要一起勾一些选项,百度如何打开TFTP客户端)。
2.关闭防火墙,防火墙开着传不过去文件。控制面板——windows防火墙——启用或关闭windows防火墙
——勾关闭——确定
3.在windows下运行tftpd.exe软件,通过菜单栏 Tftp>Configure 来设置 Home Directory(如 F:\tftproot\),
将要传送的文件放在F:\tftproot\,最后通过菜单栏Tftp>Start来启动服务。
4.在上一打步骤中,已经通过网口登陆到了ARM中,root(就是输入root回车,有密码输密码,没有密码
就登陆了),根据电脑IP地址输入命令,例如我的电脑IP是192.168.0.1,要传输的文件是test_gpio,那么从win
dows电脑中向ARM传文件的命令就是:
tftp -g -r 192.168.0.1 test_gpio
5.加入要传输文件,可以发送zip压缩文件,在ARM中通过unzip解压。
三、ARM板连接wifi
买的ARM板中支持wifi连接,进行配置。
1.首先将软件中的gpio 和wifi模块等相关部分通过TFTP传输到ARM中。将gpio_test等相关模块移动到/sbin/
目录下。客服工程师告诉我要直接引用的执行文件都需要放到/sbin目录下执行。
2.逐步运行以下代码。
#打开gpio模块
gpio_test gpio1_17 1
#加载内核模块
insmod 8188eu.ko
3.用手机或电脑开一个热点,或着直接连入无线网。我用另一台ubuntu电脑开了一个名为ARM的热点,密码
是1234567890
#生成wap_supplicant.conf文件
wpa_passphrase "ARM" "1234567890" >> /etc/wpa_supplicant.conf
4.打开wpa_supplicant程序
wpa_supplicant -iwlan0 -c /etc/wpa_supplicant.conf -B
5.dhcp分配IP,连接wifi,运行下面代码后,会分配地址
udhcpc -i wlan0
6.可能用到的代码
//查看连接不上wifi的原因
wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf &
//查看当前可搜到的wifi
iwlist wlan0 scanning
//断开网络连接
ifconfig wlan0 down
四、ssh连接ubuntu和arm板子
1.在ubuntu端,安装openssh-server。(具体百度)
2.根据客服工程师给的335ssh中的操作步骤,将相关ssh文件发送到ARM板中去,如下:
#2.1 在开发板上建立需要的目录
mkdir -p /usr/local/etc
mkdir -p /var/run /var/empty/sshd 并设定权限 chmod 755 /var/empty
#把在虚拟机下 /root/ssh/source/openssh-4.6p1生成的服务端相关文件拷贝到开发板相应目录下:
#sshd和 sftp-server复制到开发板的/sbin/目录下
#生成的六个密钥文件和sshd_config复制到/usr/local/etc/目录下
#进入/usr/local/etc/目录下,修改权限:
chmod 0644 *
chmod 0600 ssh_host_dsa_key ssh_host_key ssh_host_rsa_key
#2.2 下面是在开发板上操作
#修改/etc/目录下的passwd和group文件,添加sshd用户和组
vi /etc/passwd
#在最后一行添加sshd:*:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
#保存退出。
vi /etc/group
#在最后一行添加sshd:*:74:
#保存退出。
#2.3修改sshd_config
#分别去掉下列语句前的注释号(即去掉#号)并修改为:
#PermitRootLogin yes―――――允许根用户登陆
#PermitEmptyPasswords yes――――允许使用空密码
#UsePrivilegeSeparation no――――把安全级别降低,因为不会连接互联网
#同时修改sftp-server的存放路径为 /sbin/sftp-server
#运行sshd时要用绝对路径
/sbin/sshd
#这样可以在windows下用ssh客户端进行连接了。
#注意网口ip要和电脑ip保持同一网段。
3.ARM板连接到ubuntu开启的wifi热点中,根据分配到的服务器地址(例如,在热点中,我ubuntu是10.42.0.1,ARM板是10.42.0.215),输入ARM登录密码后就可以通过ubuntu远程访问ARM板子了。
ssh root@10.42.0.215
4.nmap
sudo apt-get install nmap
ifconfig #看当前电脑的ip 例如192.168.43.46
nmap nmap -sn 192.168.43.0/24 #扫描
五、tftp无线传输文件
本来想用ssh中的scp的,谁知道总是告诉我没有scp的命令,本以为是ubuntu没装scp,但是研究发现是ARM板没装,问客服工程师,他们也没用过scp传输文件,然后告诉我用tftp的方式无线传输。
1.配置ubuntu中tftp服务器
安装
sudo apt-get install tftpd-hpa
建立传送目录(把要上传和下载的文件都放在这个目录下)
mkdir /home/jtl/tftpboot
chmod 0777 /tftpboot
配置
vim /etc/default/tftpd-hpa
TFTP_USERNAME="tftp" TFTP_DIRECTORY="/home/jtl/tftpboot" # 这里是你的tftpd-hpa的服务目录,这个想建立在哪里都行,就是刚才那步的传送目录 TFTP_ADDRESS="0.0.0.0:69" TFTP_OPTIONS="-l -c -s" # 这里是选项,-c是可以上传文件的参数,-s是指定tftpd-hpa服务目录,上面已经指定
重新启动tftp服务
sudo service tftpd-hpa restart # 启动服务,这里要注意,采用的独立服务形式。
2.ARM板要连接ubuntu热点开的网
3.在ARM板中输入tftp的命令
命令格式是:tftp [options] host [port]
options
-l 本地文件 -r 远端文件
-g 下载文件 -p 上传文件
例如,我的ARM板连入ubuntu的IP为10.42.0.215,我ubuntu的热点IP为10.42.0.1,在/home/jtl/tftpboot下新建一个a.txt
则在我ARM板输入
tftp -g -r a.txt 10.42.0.1
就是向ARM板中远端写入ubuntu电脑中的文件a.txt
要将ARM板中的wifi-tool.zip传入ubuntu电脑的命令
tftp -p -l wifi-tool.zip 10.42.0.1
#本地上传文件wifi-tool.zip到服务器(ubuntu电脑10.42.0.1)的tftpboot文件夹下
常用的命令,检测tftp服务器是否打开
netstat -a|grep tftp
六、开机自连wifi
1.用户可以设置的开机自启动脚本在/etc/rc5.d/S99sztenv,我在/etc/rc5.d/文件夹下建立了一个wifi.sh
2.在wifi.sh文件中输入第三步中的代码,可以看到每一句之间都加了一句sleep,因为在尝试过程中,不加延迟根本没法启动起来,还是不清楚开机自启到底怎么回事
#/usr/bin/
gpio_test gpio1_17 1
sleep 1
insmod 8188eu.ko
sleep 1
wpa_supplicant -iwlan0 -c /etc/wpa_supplicant.conf -B
sleep 1
udhcpc -i wlan0
sleep 1
/sbin/sshd
3.在S99sztenv中写入
#/usr/bin/
cd /etc/rc5.d/
sh wifi.sh
4.这样设置好后,重启就会连接第三步中设置的wifi
七、交叉编译环境配置
1.解压gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux.tar.bz2这个官方给等包,我解压到了/opt 目录下了
tar -jxvf gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux.tar.bz2 -C /opt
2.在环境变量中添加交叉编译路径
vi ~/.bashrc
最后一行加入
export PATH=/opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux/bin:$PATH
source ~/.bashrc
3.ubuntu下安装
sudo apt-get install lib32stdc++6
4.安装上一步后,再看交叉编译是否成功
arm-linux-gnueabihf-gcc -v
5.后来在交叉编译过程中报错,关于libz.so.1
缺少lib32z1库
sudo apt-get install lib32z1
八、配置python的交叉编译环境
python的交叉编译环境需要重新配置过,这里讲一下具体怎么用:
1.基本的配置过程参照下面的博客
http://blog.csdn.net/ueillemmx/article/details/43955495
2.下载python源码,需要注意的是交叉编译器arm-linux-gnueabihf 4.7,最后生成的交叉编译文件包(我命名为python3.6)下有四个文件:'bin'、'include'、'lib'、'share'
3.通过tftp传送到ARM板中,同时我还传过去了一个test.py的python文件
4.运行程序,需要允许bin下的python3.6,例如,在当前目录在有交叉编译文件包python3.6和test.py,则运行:
./python3.6/bin/python3.6 test.py
5.如果需要用到别的模块(比如我需要用到串口的serial模块,但是python源码包中没有),则需要下载对应的模块源码(serial模块对应的是pyserial源码包),tftp传送到ARM上后,运行:
./python3.6/bin.python3.6 pyserial3.4/setup.py
其实和源码安装模块的方法一样。