【嵌入式学习】搭了两天的环境~

【这是个学习分享的文章,有什么说的不对的地方请大家指正,本人感激不尽!】

随着温度的逐渐升高,我们又迎来了暑假。可能是自己最后一个暑假了吧!

想这种三A学校的学生,如果不努力,怎么找工作?怎么找女朋友?怎么搞事情?…………

本着热爱学习的念头,我来到了华清远见学习嵌入式。【唉,学校提供的免费机会,白又白不要嘛】

第一天

哈哈哈,你说第一天能干嘛,当然是国际惯例啦……搭建开发环境!!!!!

第一步:前人栽树后人乘凉

老师早已把一些要用的东西配置成了虚拟机系统,直接打开用就行。里面有进行开发大部分要用到的工具,如GCC……

【嵌入式学习】搭了两天的环境~_第1张图片

第二步:网络的设置

还有网络的设置~~~~【神烦!!!】

在当前的网络环境上设置好,使得虚拟机能上网!(毕竟要安装一些服务的)

就这样,折腾了一天。

但是呢,还是学到一些东西的

Linux常用命令的使用

1、ls -显示文件列表

2、cp -拷贝复制文件

3、touch -创建文件

4、mkdir -创建文件夹

5、sudo -管理员最高权限

6、cd  -跳转到XX路径  例如:cd Project/server/

7、pwd -显示当前路径

8、rm 删除 (文件)  rm -r (删除文件夹)

9、mv 移动文件或文件夹

gedit 图像化文本编辑器
vi    命令行文本编辑器

./  :运行一个可执行文件  例如文件名是test  ./test  

sudo chmod 777 -R .  让所有列表文件变为最高权限

sudo apt-get update:更新软件库的列表
sudo apt-get install git :在线安装应用程序  例如git就是一个应用程序的名称 

开发流程

1、原理图设计  ---AD软件  protel99(落后)   PowerPCB、、、
2、PCB图绘制  电路板图的设计  元器件的封装 
3、打板(PCB图、元器件清单、采购元器件)
4、焊电路板-电烙铁、焊锡 调试工具(万用表、示波器)
5、编写程序--编程工具(keil IAR PIC) 
   51单片机的编程方法:直接对硬件寄存器进行操作
   stm32单片机的编程方法:1、寄存器的方法      (ucos系统)
                         2、库函数的方法
   ARM芯片:(linux操作系统)1、硬件上PCB(4层以上)
                            2、内核系统、驱动  (编译环境:具有linux内核系统-ubuntu)
                            3、应用程序开发


还有就是这个大家伙

【嵌入式学习】搭了两天的环境~_第2张图片

【嵌入式学习】搭了两天的环境~_第3张图片

用的是三星ARM Exynos 4412,【ARM Cortex-A9】(在只玩过51的同学眼里是多么的高级,不过,说好的STM32呢?)

第二天

额…………

由于第一天搭建的网络有些问题(还是连不上,各种意外情况),所以一上午在搞网络的事,随便又了解了IP网的分类。

IP子网的分类
A类:第一个为网络段,其他为主机号;网络段的值:(0~127)
B类:第一、二为网络段,其他为主机号;网络段的值:(128.0~191.255)
C类:第一、二、三为网络段,其他为主机号;网络段的值:(192.0.0~223.255.255)

D类:组播地址

子网掩码:
255.255.255.0:C类的子网掩码,与对方的IP相与,对比是不是同个局域网
网关(地址):(这个没有听到,唉,走神了,希望大家补充)
广播地址:本网关下最大的ip地址。(主机号为最大值)

借用百度里的解释

A类IP段 1.0.0.0 到126.255.255.255 (0段和127段不使用)
B类IP段 128.0.0.0 到191.255.255.255
C类IP段 192.0.0.0 到223.255.255.255
XP默认分配的子网掩码每段只有255或0
A类的默认子网掩码 255.0.0.0 一个子网最多可以容纳1658万多台电脑
B类的默认子网掩码 255.255.0.0 一个子网最多可以容纳6万台电脑
C类的默认子网掩码 255.255.255.0 一个子网最多可以容纳254台电脑

就这样,把虚拟机的那个装Linux系统(乌班图)的伪电脑分配一个IP地址,【物理机一个,虚拟机一个,方便后来共享文件】


下午就开始搞那个板子了,哦,那个板子是华清远见的FS4412。

网络内核、根文件系统挂载的方式:
1、搭建nfs环境:(挂载根文件系统)
    1)安装nfs服务:sudo apt-get install nfs-kernel-server
    2)配置:sudo gedit /etc/exports
      nfs 允许挂载的目录及权限在文件 /etc/exports 中进行了定义。 例如,我们要
      将”/source/rootfs”目录共享出来,那么我们需要在/etc/exports 文件末尾添加如下一行:
      /source/rootfs *(rw,sync,no_root_squash)
      创建/source/rootfs,cd / 到根文件系统的目录,sudo mkdir source  cd source , sudo mkdir rootfs


     sudo chmod 777 -R source :把source改为最高权限


2、搭建tftp环境:


先创建TFTP目录:/tftpboot 权限:777
mkdir /tftpboot chmod 777 /tftpboot


安装TFTP服务(服务器端、客户端):apt-get install tftpd-hpa tftp-hpa
修改服务器端配置:sudo vi /etc/default/tftpd-hpa
修改第2行:路径为/tftpboot
修改第4行:选项:-l –c –s 
重启TFTP服务:
sudo /etc/default/tftpd-hpa restart或sudo service tftpd-hpa restart

NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。【百度百科】

通俗来讲,通过NFS可以使开发板里的Linux系统用得上物理机上的文件。

TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务端口号为69。

为什么要安装这个服务呢?这个还不是很清楚,不知哪位懂得大佬来指点指点小弟呢?


小总结

有几个问题:1、这个ARM Cortex-A9的开发流程与51的有什么不同;

                    2、ARM Cortex-A9的具体开发流程;

                    3、在Linux里开发与在Windows里开发有什么不同;

                        不能在Windows里开发然后在下载文件进去吗?为什么要在Linux系统里开发?

                    4、树莓派到底算是什么?和ARM Cortex-A9有什么不同?

收获:1、掌握Linux的常用命令;

          2、锻炼了意志力;

          3、了解ip网的分类;

          4、得到一些技巧,如:局域网里用飞秋传输大文件很方便;Notepad++………………

内心感受:老师讲课感觉好快啊!是不是我能力不够?

                只学了51就搞ARM Cortex-A9是不是有点~超前?

                一些Linux命令好长,唉呀!英语也是要点基础的啊!

                基于搭建环境时出现的各种意外,我们都一如既往地想办法解决掉它,我觉得这才是真的棒!

明天第三天,加油!!我可以的!

第三天

【结果是好的,毕竟搭了三天环境了。】

由于第二天想通过挂载的方式来,然而结果还是出错(T###############################),所以今天通过Fastboot的方式来把Linux内核拷进开发板里,把先前的nfs和tftp放弃了。

    先介绍一款软件:【SecureCRT】

SecureCRT是一款支持 SSH(SSH1和SSH2)的 终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件。
SecureCRT支持SSH,同时支持 Telnet和rlogin协议。SecureCRT是一款用于连接运行包括 Windows、 UNIX和VMS的理想工具。通过使用内含的VCP命令行程序可以进行 加密文件的传输。有流行CRTTelnet客户机的所有特点,包括:自动注册、对不同主机保持不同的特性、打印功能、颜色设置、可变屏幕尺寸、用户定义的键位图和优良的VT100,VT102,VT220和ANSI竞争.能从命令行中运行或从浏览器中运行.其它特点包括文本手稿、易于使用的工具条、用户的键位图编辑器、可定制的 ANSI颜色等.SecureCRT的SSH 协议支持DES,3DES和RC4密码和密码与 RSA鉴别。
打开 SecureCRT,硬件连接与图所示
【嵌入式学习】搭了两天的环境~_第4张图片

(蓝色的是串口,黑色的是USB,中间的是5V电源)

第一步:安装Fastboot驱动

打开SecureCRT,设置如图,点击快速连接(就是在快速连接这个界面),协议选择Serial,端口去设备管理器看,波特率选择115200,流控的选项都不选。

【嵌入式学习】搭了两天的环境~_第5张图片

然后点“连接”

就这样,我们连接上了开发板,然后要添加一个系统变量。右击计算机点击属性,点击左侧的高级系统设置,选择环境变量里的系统变量Path,双击编辑,把【E:\Fastboot\】添加进去。当然啦,要E盘里有Fastboot这个文件才行。

【嵌入式学习】搭了两天的环境~_第6张图片

执行完以上操作后,就可以开始安装驱动了


SecureCRT里输入Fastboot。安装驱动!在设备管理器里会看到一个有未识别的设备,右击更新驱动,选择在本地找驱动…………

不过还有一种方法,那就是安装一个驱动精灵!!!!!!!!!(二三分钟就搞定了安装驱动)、

第二步:装系统

好了,剩下的就是把内核,文件系统等拷进开发板了。

    按Windows键+R,输入cmd,进入一个黑窗口。

    去到存放文件的目录中,(我放在E盘的001文件夹里)

    输入:

        Fastboot flash bootloader u-boot-fs4412.bin     //引导文件

        Fastboot flash kernel zImage         //Linux内核

        Fastboot flash system system.img     //文件系统

    【嵌入式学习】搭了两天的环境~_第7张图片

好了,到这里就快完成了

重启开发板,在SecureCRT里等待一连串的字符飘过~~~~~~~

【嵌入式学习】搭了两天的环境~_第8张图片

最后出现或按一下enter后出现:[xxxxxxxx] # (如上图)    恭喜你!!!你成功的把Linux搞进了开发板里了!!!

进入了系统了,不搞点东西怎么行呢?

SecureCRT里输入: echo 1 > /sys/class/leds/led2/brightness
                                    echo 1 > /sys/class/leds/led3/brightness
                                    echo 1 > /sys/class/leds/led4/brightness

                                    echo 1 > /sys/class/leds/led5/brightness

                                    实现LED灯全亮!

【嵌入式学习】搭了两天的环境~_第9张图片

这是亮一个灯的

第四天

学习了《shell脚本》

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。


创建一个文件,用vi打开,

touch 001.sh
vi 001.sh
#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。

【嵌入式学习】搭了两天的环境~_第10张图片

把昨天的那些指令写进001.sh文件里,用一个循环就可以实现流水灯!!!

#!/bin/sh
while :
do
echo 1 > /sys/class/leds/led2/brightness
echo 0 > /sys/class/leds/led2/brightness

echo 1 > /sys/class/leds/led3/brightness
echo 0 > /sys/class/leds/led3/brightness

echo 1 > /sys/class/leds/led4/brightness
echo 0 > /sys/class/leds/led4/brightness

echo 1 > /sys/class/leds/led5/brightness
echo 0 > /sys/class/leds/led5/brightness

done

###############################分割线################################

编译源码

我们拿到了Linux内核和uboot的源码,接下来就是编译出来,然后再拷进开发板里。

首先安装交叉编译工具

首先,配置交叉编译工具的环境:
cust@ubuntu:/disk1/tools/toolchain-4.5.1/bin$ pwd
/disk1/tools/toolchain-4.5.1/bin   这【个因人而异,看你把工具的文件解压到哪里了】

编辑配置文件: sudo gedit /etc/bash.bashrc

添加环境变量:在文本最末添加一行:export PATH=$PATH:/disk1/tools/toolchain-4.5.1/bin
让其生效:
source /etc/bash.bashrc

运行:arm-linux-gcc -v   查看交叉编译器的版本

接着编译uboot:

把uboot解压,在文件夹里打开Makefile

修改uboot的Makefile文件:

更改这一句:替换为自己的交叉编译器路径
CROSS_COMPILE = /disk1/tools/toolchain-4.5.1/bin/arm-none-linux-gnueabi-


首先,清除掉原来uboot的配置
make distclean
./build_uboot.sh 
最终生成的uboot文件镜像:u-boot-fs4412.bin

然后,编译Linux内核:

修改内核的Makefile文件:
更改这一句:替换为自己的交叉编译器路径
CROSS_COMPILE = /disk1/tools/toolchain-4.5.1/bin/arm-none-linux-gnueabi-


编译:make -j4

ok,就这样Linux内核与uboot就编译好了。








你可能感兴趣的:(嵌入式,单片机)