uboot、shell常用下载和设置命令(持续更新)
《转载请注明出处》
// 设置启动参数
set bootargs noinitrd init=/linuxrc console=ttySAC0,115200 root=/dev/nfs nfsroot=192.168.1.103:/work/nfs_root/1.20_fs ip=192.168.1.105:192.168.1.103:192.168.1.1:255.255.255.0::eth0:off
set bootargs console=ttySAC0,115200 root=/dev/nfs nfsroot=192.168.1.103:/work/nfs_root/qt_fs_new ip=192.168.1.105:192.168.1.103:192.168.1.1:255.255.255.0::eth0:off
set bootargs console=ttySAC2,115200 console=ttySAC0,9600 root=/dev/nfs nfsroot=192.168.1.104:/work/nfs_root/qt_1.20_fs_wifi_AP/ ip=192.168.1.105:192.168.1.104:192.168.1.1:255.255.255.0::eth0:off
set bootargs console=ttySAC0 root=/dev/mtdblock3 rootfstype=jffs2 // jffs2
set bootargs console=ttySAC0,115200 root=/dev/mtdblock3 // yaffs
set bootcmd 'nand read 30000000 kernel;bootm 30000000'
##############################################################################
// 挂接网络文件系统到子目录
sudo vi /etc/exports
/work/nfs_root/first_fs *(rw,sync,no_root_squash) // 服务器允许目录被挂接
sudo /etc/init.d/nfs-kernel-server restart // 重启服务器的nfs支持系统
mount -t nfs -o nolock,vers=2 192.168.1.103:/work/nfs_root/1.20_fs/ /mnt // vers=2: nfs协议版本号
##############################################################################
// PC下载文件系统
tftp 30000000 fs_mini.jffs2
tftp 30000000 fs_mini_mdev.yaffs2
nand erase.part rootfs // 擦除分区
##############################################################################
// 下载文件系统
nfs 30000000 192.168.1.103:/work/nfs_root/1.20_fs.yaffs2;
nand erase.part rootfs;
nand write.yaffs 30000000 00320000 $filesize;
nand write.jffs2 30000000 00320000 $filesize;
##
nfs 30000000 192.168.1.103:/work/nfs_root/1.7_fs_ok.yaffs2;nand erase.part rootfs;nand write.yaffs 30000000 00320000 $filesize; reset
# 0x00320000: 文件系统的偏移地址; 不能用rootfs, 因为这样会下载很多无关的内容进去
# 1.6u-boot用$(filesize), 指传输文件的大小
##############################################################################
// 下载内核
cp arch/arm/boot/uImage /work/nfs_root/uImage_FTDI;
nfs 30000000 192.168.1.104:/work/nfs_root/uImage_FTDI; bootm 30000000
nand erase.part kernel;
nand write 30000000 kernel;
boot;
bootm 30000000
---
nand erase 00120000 200000
nand write 30000000 00120000 200000
sound.bin
##############################################################################
// 下载u-boot u-boot_2012_org.bin
nfs 32000000 192.168.1.113:/work/nfs_root/sound_.bin; //u-boot_2012_k4.bin;
nand erase.part u-boot;
nand write 32000000 u-boot;
protect off all
nand erase 0 30000
nand write 32000000 0 30000
##############################################################################
// 设置机器ID:
set machid 16a
// 设置ip
set ipaddr 192.168.1.105;
set serverip 192.168.1.104;
set ethaddr 00:0c:29:4d:e4:f4;
set machid 16a;
save;
##############################################################################
// 打开tftp工具后
tftp 30000000 u-boot.bin
tftp 30000000 uImage
##############################################################################
// 环境变量
#PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4.3.2/bin"
#PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/work/tools/gcc-3.4.5-glibc-2.3.6/bin/"
/usr/local/arm/4.3.2/bin:/home/lhc/Qt/output/qt-embedded/bin:/home/lhc/Qt/output/qt-arm/bin:/home/book/bin:/home/book/.local/bin:/home/lhc/Qt/output/Qt-Creator/bin:/home/lhc/Qt/output/qt-embedded/bin:/home/lhc/Qt/output/qt-arm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/arm/bin
sudo mount -t cifs -o username=admin //192.168.1.101/f/ /work/share
##############################################################################
SYSTEM-V IPC通信命令
ipcs -a: 查看系统所有IPC的状态
-q: 查看系统消息队列
-m: 查看共享内存状态
-s: 查看信号量 // signal
ipcrm -m (id号)
##############################################################################
// 配置 编译 安装 // 配置(用来生成Makefile, ./configure --help)
./configure --host=arm-linux --prefix=$PWD/tmp
--with-shared generate shared-libraries
make && make install
sudo cp * /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include // 将头文件和库复制到工具链的目录(-rfd)
sudo cp -rfd * /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib // lib
cp -rfd *so* /work/nfs_root/1.20_fs/lib
##############################################################################
// 制作补丁
cp .config config_wm8976 //选上wm8976
make menuconfig //选上uda134x
cp .config config_uda134x
cd ..
mv linux-3.4.2 linux-3.4.2_alsa
tar -xjf linux-3.4.2.tar.bz2
diff -urN linux-3.4.2 linux-3.4.2_alsa/ > linux-3.4.2_wm8976_uda134x.patch
rm -rf linux-3.4.2
##############################################################################
// 启动tellet
telnetd -l /bin/login
##############################################################################
//编译内核:
1. 解压
2. 打补丁
3. 将我们写的驱动程序复制到内核, 并修改Makefile
4. cp config_ok .config
3. make menuconfig, 选中LCD DM9000 UVC支持
4. make uImage
##############################################################################
//编译busybox1.20
1.make menuconfig指定交叉编译器头
2.make
3.哪些错误, 就make menuconfig把这一部分去掉
##############################################################################
//解决app段错误
1. 让程序直接在开发板上运行, 当它发生错误时, 令他产生core dump文件;
然后使用gdb根据core dump文件找到发生错误的地方
2. 在ARM上运行
1. ulimit -c unlimited
2. 执行应用程序: 程序出错时会在当前目录下上层名为core的文件
3. 在PC上执行(例子)
sudo /usr/local/arm/4.3.2/bin/arm-linux-gdb uvc_app core
4. pc上执行, 知道是哪儿发生了段错误, 可执行q退出
backtrace
##############################################################################
//解决驱动段错误
PC is at 0x0
LR is at snd_pcm_info+0xd8/0xe0
==>显然是在snd_pcm_info里面调用某个子函数后出错
##############################################################################
// strace的使用
strace -o log app
##############################################################################
// 执行su命令进入root用户, 可以不需要sudo命令
// 编译.c文件
gcc a.c ==>a.out
创建空文件:
> dir
将一个目录拷贝到另一个地方, 如果那个地方已经存在这个目录, 就对着两个目录进行合并
source /etc/bash.bashrc
##############################################################################
开发板uart和easyeop的连线:
1.开发版的uart的vcc和地线都连上了
2.开发版的第3根连到easyeop第2根(电源键方向为小)
开发版的第2根连到easyeop第3根(电源键方向为小)
##############################################################################
将函数编译成动态库so, 然后再链接生成APP,的Makefile
app: main.o libsem.so
gcc -o $@ $^ -lsem -L.
echo LD_LIBRARY_PATH=. ./app > app.sh
chmod +x app.sh
libsem.so : semaphore_lib.o
gcc -shared -o $@ $^
%.o : %.c
gcc -fPIC -c -o $@ $<
clean:
rm -rf *.o *.so app *.sh
##############################################################################