技术标签: linux网络编程 linux uboot linux内核 驱动开发
第二阶段部署UBOOT,uImage,rootfs到TF卡中
准备一张TF卡,最好是金士顿的TF卡,我一开始用的不是金士顿的卡,总是部署失败,后来我换了一张32G的金士顿TF卡,成功部署!像一般的金士顿1G,2G卡也没应该有问题。
1.2.1烧写UBOOT到TF卡
插入TF卡,ubuntu12.04会识别。在驱动文件下可以看到/dev/sdc,文件。有些会识别成/dev/sdb,根据自己的系统把TF卡识别成说明文件名而定。我的是识别成/dev/sdc文件。在部署之前最好把TF卡格式化了,确保里面没有其他数据。
清空TF卡,包括分区表
Sudo dd if=/dev/zero of=/dev/sdc bs=1M count=1 //意思是用0填充sdc的前1M的空间,注意这个命令也可以用来测试磁盘的读写速度。
查看TF卡是否忙碌sudo sfdisk -R /dev/sdc
BLKRRPART: Device or resource busy
This disk is currently in use.
如果出现这个打印语句说明TF已经被挂载,重新插拔一次即可。
磁盘分区:
sudo cat <<EOT | sudo sfdisk --in-order -uM /dev/sdc
回车输入
> 1,16,c
> ,,L
> EOT
这里的1,16,c表示的是从这第一个主分区(sdc)的第1-16M之间的文件系统类型为FAT32,这个c是FAT32的类型代码。而下面一行的就表示默认了两个值的大小和这么大(这个主分区1-16M后面的空间)的剩余空间的文件系统类型为LINUX.
root@ubuntu:/# sfdisk -l /dev/sdc //查看一下分区是否成功
Disk /dev/sdc: 30436 cylinders, 64 heads, 32 sectors/track
Units = cylinders of 1048576 bytes, blocks of 1024 bytes, counting from 0
Device Boot Start End #cyls #blocks Id System
/dev/sdc1 1 16 16 16384 c W95 FAT32 (LBA)
/dev/sdc2 17 30435 30419 31149056 83 Linux
/dev/sdc3 0 - 0 0 0 Empty
/dev/sdc4 0 - 0 0 0 Empty
这是我为TF卡分好的区可以清楚的看到1-16M的空间文件系统类型为FAT32,其余的空间文件系统类型为linux
磁盘格式化:
sudo sfdisk -l /dev/sdc //先看看分好不同区磁盘的名字,我的分别是sdc1,sdc2
重新分好区之后为了使dev设备文件可以识别,最好重新插拔TF卡,在dev下可以看到sdc1,sdc2这两个问件,否则在磁盘格式化的时候会提示找不到磁盘。
sudo mkfs.vfat /dev/sdc1 //把16M的sdc1磁盘格式化为vfat格式,也就是我们经常看见的FAT32格式。
sudo mkfs.ext4 /dev/sdc2 //16M以后的空间格式化为ext4格式
向TF卡烧写UBOOT.bin文件
先打开uboot文件夹
sudo dd if=spl/sunxi-spl.bin of=/dev/sdc bs=1024 seek=8
sudo dd if=u-boot.bin of=/dev/sdc bs=1024 seek=32
通过A10相关资料,通过以上2条命令烧写spl和uboot到指定位置,暂时不清楚如何确定这2个读取位置.
1.2.2烧写linux内核
制作对对A10芯片进行配置的二进制文件script.bin
打开内核源码的文件夹,然后打开源码够工具文件夹
Sudo cd ../linux-sunxi-sunxi-3.0
Sudo cd ../sunxi-tools-master/ //这个文件夹就在内核源码里面单词里面有tools
Sudo make
make出现如下错误:
Package libusb-1.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libusb-1.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libusb-1.0' found
Package libusb-1.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libusb-1.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libusb-1.0' found
但还是在sunxi-tools-master目录下生成了fex2bin。这个错误还没解决,打算先用生成的fex2bin试试(fex2bin文件,能把 *.fex文件生成 *.bin文件
解决方法:
pkg-config 是一个提供从源代码中编译软件时查询已安装的库时使用的统一接口的计算机软件。可以解决明明在自己机器上编译好好的,在别人电脑上编译就不行问题。当安装一个库时(从RPM,deb或其他二进制包管理系统),会包括一个后缀名为pc的文件,它会同其他.pc文件一起放入一个文件夹(依赖与你的系统设置)。在这个文件里包含有数个条目。这些条目通常包含用于其他使用这个库的程序编译时需要的库设置,以及头文件的位置,版本信息和一个简介。
sudo apt-get install libusb-1.0-0-dev //安装这个软件
sudo find -name "libusb-1.0.pc" //查找这个软件的安装位置
./usr/lib/i386-linux-gnu/pkgconfig/libusb-1.0.pc //这是我的机器的位置
Sudo export PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu /pkgconfig:$PKG_CONFIG_PATH
Sudo set | grep PKG_CONFIG //显示本地的环境变量
PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig //环境变量设置成功
Sudo pkg-config libusb-1.0 --cflags –libs
Sudo make
利用上面生成的工具fex2bin,将sunxi-boards/sys_config/a10/pcduino.fex文件生成对A10芯片进行配置的二进制文件script.bin
在sunxi-tools文件夹下找到fex2bin可执行文件
Sudo ./fex2bin ../sunxi-boards/sys_config/a10/pcduino.fex script.bin //其根据自己的目录找对应的文件
sudo mount /dev/sdc1 /mnt
Sudo cd /mnt
Sudo mkdir root //在mnt目录下创建root目录
打开内核源码目录
Sudo cp arch/arm/boot/uImage /mnt/root/ //烧写内核到sdc1
打开sunxi-tools文件夹
Sudo cp script.bin /mnt/boot //找到脚本文件写入dsc1分区
配置启动参数文件
A10的UBOOT读取启动参数流程如下生成过程boot.cmd——>boot.src——>uEnv.txt
制作boot.cmd
Sudo vim boot.cmd
setenv bootargs console=ttyS0,115200 noinitrd root=/dev/mmcblk0p2 init=/sbin/init rootwait
panic=10 ${extra}
fatload mmc 0 0x43000000 boot/script.bin
fatload mmc 0 0x48000000 boot/uImage
bootm 0x48000000
制作boot.scr
Sudo mkimage -C none -A arm -T script -d boot.cmd boot.scr
制作uEnv.txt
Sudo vim uEnv.txt
bootenv=boot.scr
loaduimage=fatload mmc ${mmcdev} ${loadaddr} ${bootenv}
mmcboot=echo Running boot.scr script from mmc ...; source ${loadaddr}
配置文件写入sdc1分区
Sudo cp boot.scr /mnt/
Sudo cp uEnv.txt /mnt/
卸载sdc1分区至此uboot和uimage,启动文件烧写完毕,后面是根文件系统的烧写
Sudo umount /mnt
1.2.3向TF卡烧写根文件系统
sudo mount /dev/sdc2 /mnt/ //挂载TF卡的sdc2分区到/mnt
打开制作好的rootfs目录
sudo cp -pR rootfs/* /mnt/ //把整个目录拷贝到sdc2分区
sudo umount /dev/sdc2 //卸载分区
在全部烧写完成之后,插入TF到ubuntu12.04可以识别为两个盘,一个盘里面是有boot文件夹和boot.scr文件,uEnv.txt文件。其中boot文件夹里面装着script.bin和uImage文件。另一个盘里面可以看到是文件系统的那些文件。至此系统部署成功了。
拔下TF卡,插入pcduino。至此UBOOT,启动配置文件,内核,文件系统都烧写完毕。系统上电,顺利的化,整个最小系统就启动配置成功了,可以进一步的驱动开发了。如果要修改UBOOT,内核,重新编译烧写就可以了。正常的化系统可以进入串口终端了。
/ # ls
bin home lost+found run tmp
dev lib mnt sbin usr
etc linuxrc proc sys var
/ #
安装npm和cnpm配置环境变量npm install cnpm -g --registry=https://registry.npm.taobao.orgnpm cache clean --force用当前项目下dos用 cnpm install --by=npm命令行环境的安装npm install --save-dev sass-loadernpm inst..._飞冰如何获取环境变量
并查集及例题
转 行业 | 做Quant,你以为靠Python和C++就够了吗?“对 Quant 而言 Python 的需求高吗,除 C++ 外还有哪些流行的编程语言?”1. 高2. 还有:Python, Java, Matlab, R, Q和一些公司内部自有语言(如高盛的自有语言)但是我不希望敷衍了事,说说我心中最重要的五类语言。这不仅仅是对于一个Quant必须的,而是一个丰满的程序员所必备的。在艺术..._pythn和c++
进程与线程的区别进程:CPU资源分配的最小的单位,由进程的各个线程共享线程:cpu执行调度的最小单位,优点充分利用CPU资源操作系统线程的实现主流的操作系统都提供了线程的实现(1)内核线程实现内核线程(KLT)就是由操作系统内核直接支持的线程,内核通过操纵调度器对线程进行调用,程序不直接与内核线程接触而是通过一种高级接口轻量级进程(LWP),它与内核线程一一对应,这就是我们...
一、Text输入框的属性属性 参考:Python学习笔记—— tkinter_03Button、Label_小橙子的博客-程序员宅基地Python学习笔记—— tkinter_04 Entry(单行输入框)_小橙子的博客-程序员宅基地二、Text输入框的方法1.理解行和列多行文本,确定一个位置需要使用坐标。列数从0开始数行数从1开始数2.删除,插入、获取文本框里的内容:随意输入充当测试数据删除,插入、获取 都需要使用坐标或光标处,结尾等确定位..._tkinter的文本框不支持键盘输入
1、这里实现一个4列多行的Grid布局代码片段。_qgridlayout 最小高度
codeblocks默认源代码文件编码根据OS而定,编译时编码UTF-8。 在你不更改任何codeblocks配置时: 在WINDOWS中:源代码——WINDOWS-936(即GBK),编译后文件默认UTF-8 而输出windows会按GBK来解释 ,所以从GBK->UTF-8->GBK就是乱码; 在LINUX中:源代码——..._code blocks _tmain
在Administrator(管理员)创建其他新用户时,忘记其他新用户的密码或者其他新用户密码是默认状态时,可以通过进行如下操作:1 点击如下在mysql中的Admin;j结果如下,再点击左边一栏的bugtracker;_mantis 忘记管理员密码
1 viakiba 325 天前 Sleuth + Zipkin 2 ayonel 325 天前 这些是监控系统干的活,国内比较好的是 CAT,但是系统比较庞大。或者 metrics,比较轻量。https://github.com/dropwizard/metrics 3 msaionyc 325 天前 java 平台 spri..._java接口调用统计开源组件
目录一.带宽与宽带的区别是什么?二.带宽、网速和流量之间的关系三.上行带宽和下行带宽是什么意思?各有什么作用?四.服务器的上行和下行带宽理解五.内网ip和外网ip区别一.带宽与宽带的区别是什么?带宽是量词,指的是网速的大小,比如1Mbps的意思是一兆比特每秒,这个数值就是指带宽。宽带是名词,说明网络的传输速率很高 。宽带的标准各不相同,最初认为128kbps以上带宽的就是宽带,而以下的就是窄带。但现在国内运营商一般提供至少512kbps带宽的宽带服务。也就是说,带宽是_服务器只要内网需要带宽带吗
dir /b转载于:https://www.cnblogs.com/sea-stream/p/10161818.html
官网:https://www.vagrantup.com准备工作版本选择:centOS 5.6 64bitMySQL 5.6redis 3.2nginx 1.10.2 先决条件: Host 机上装好 vagrant, virtualBox 下载好 centOS 虚拟镜像安装virtualBox自行百度, 安装很简单, 确保网络配置中的使用网线连接勾上就好了 不然..._vagrant linux box