智能家居项目(华清远见)

环境搭建

一 pc机和嵌入式设备

1.pc机
[1]BIOS (硬件初始化:系统时钟,内存(SDRAM/DDR2/DDR3/DDR4),启动方式:USB 硬盘 光驱 ...)
[2]引导程序 (grub,lilo,...) =>加载操作系统
[3]OS (windows,Linux,Mac os)
[4]挂载文件系统(NTFS,FAT(16/32),EXT(2,3,4))
[5]应用程序

2.嵌入式设备(exynos4412)
[1]iROM固化代码(基本硬件初始化,判别启动方式(SD/USB/EMMC),
读取存储介质一部分数据到iRAM
)

[2]iRAM代码运行bootloader第一阶段(初始化系统时钟,初始化内存,搬移bootloader到内存)
[3]内存中运行bootloader第二阶段(初始化基本的硬件设备(串口,EMMC,SD),加载OS到内存)
[4]内存中运行操作系统(Linux,windows CE,Mac OS)
[5]挂载文件系统
[6]运行应用程序

bootloader = BIOS + 引导程序

二 Linux 解压命令

tar -xvf xxx.tar.*
xxx.tar.gz -> tar -zxvf xxx.tar.gz
xxx.tar.bz2 -> tar -jxvf xxx.tar.bz2
xxx.tar.xz -> tar -Jxvf xxx.tar.xz

三 添加交叉开发工具链

交叉开发:在PC机完成代码的编写与编译,在开发板运行编译好的程序

export PATH=$PATH:交叉开发工具链绝对路径

例如:
在/home/linux/.bashrc(针对当前的登陆用户有效)或/etc/bash.bashrc(所有用户都有效)文件中添加如下内容:

TOOL_CHAIN=/home/linux/workdir/15071/fs4412/gcc-4.6.4/bin
export PATH=$PATH:$TOOL_CHAIN

注意:
64bit ubuntu需要在线安装32bit运行库
sudo apt-get install lib32ncurses5
sudo apt-get install lib32z1​

四 sd卡烧写u_boot

(1)mkuboot.sh -> 在烧写一个uboot到sd卡
(2)通过拨碼开关从sd卡启动
(2)在sd卡中新建一个sdupdate目录
(4)将自己编译好的u-boot-fs4412.bin拷贝到了sdupdate目录
(5)从sd卡启动,在启动的uboot中,
输入命令:(将bootloader写到emmc)
(6)拨动拨碼开关从emmc启动

五 用u_boot引导Linux内核

1.配置tftp服务(文件传输)
(1)安装软件包

离线方式安装:
sudo dpkg -i *.deb

在线方式安装:
sudo apt-get install tftp-hpa (客户端程序)
sudo apt-get install tftpd-hpa (服务端程序)

注意:
lsb_release -a 查看ubuntu版本信息


(2)修改默认的配置文件 /etc/default/tftpd-hpa
TFTP_DIRECTORY="/home/linux/fs4412/tftpboot" 自己的tftpboot路径

(3)重新启动tftp服务
sudo /etc/init.d/tftpd-hpa restart

sudo service tftpd-hpa restart

测试:
tftp 127.0.0.1
tftp>get 下载的文件
tftp>quit

2.配置nfs服务(设置目录为网络上的共享目录)
(1)安装软件包
sudo apt-get install nfs-kernel-server

(2)修改默认的配置文件 /etc/exports

自己电脑上需要共享的目录路径
/home/linux/fs4412/share *(rw,sync,no_root_squash)

(3)重新启动nfs服务
sudo /etc/init.d/nfs-kernel-server restart

sudo service nfs-kernel-server restart


测试:
sudo mount IP:共享路径 自己的挂载点目录

例如:
sudo mount 127.0.0.1:/home/linux/fs4412/share ./nfs(自己电脑上当前目录下的nfs子目录)

撤销:
sudo umount 挂载点目录

六 u_boot常用命令

(1)设置开发板ip地址
setenv ipaddr ip地址


(2)设置tftp服务器端的ip地址
setenv serverip 服务器端的地址

开发板和ubuntu之间网络通信(板子Ping ubuntu):
<1>板子IP地址和Ubuntu的IP地址的网络号一样
<2>虚拟机桥接模式
<3>无线网卡禁用
<4>防火墙关闭

-------------------------------------------------------------
还是没有效果:
[1]网线有问题
[2]板子网卡芯片有问题
------------------------------------------------------------


开发板通过tftp从ubuntu下载程序:
<1>ubuntu已经安装过tftp服务
<2>需要下载的文件已经存放在tftp服务指定的工作目录下
<3>在开发板中需要设置serverip (ubuntu的IP地址)
------------------------------------------------------------
如果没有效果:
[1]网络问题
[2]ubuntu的tftp服务死掉----->重启服务
------------------------------------------------------------



(3)保存设置好的环境变量
save

(4)引导Linux内核的命令
tftp 41000000 uImage
tftp 42000000 exynos4412-fs4412.dtb
tftp 43000000 ramdisk.img

bootm 内核在内存地址 ramdisk在内存地址 设备树在内存地址
bootm 41000000 43000000 42000000

注意:
如果没有ramdisk,第二个参数用"-"代替

(5)设置开发板启动后,自动执行的命令(uboot 倒计时完成之后)
setenv bootcmd tftp 41000000 uImage\;tftp 42000000 exynos4412-fs4412.dtb\;tftp 43000000 ramdisk.img\;bootm 41000000 43000000 42000000


ipaddr : 设置板子IP
serverip: 设置tftp的服务端IP
bootcmd : u_boot倒计时之后,自动执行的命令
bootargs: 告诉操作系统挂载文件系统的方式
tftp : 下载文件
bootm : 启动操作系统

posted @ 2019-07-10 23:13  不想被举的栗子  阅读(2537)  评论(0编辑  收藏  举报