今天又是周五了,把这段时间的工作总结一下吧:
1、说实话,大部分时间用于玩系统了,装了ctags + taglist + cscope + cppcomplete + global,打造了一个属于我自己的编程盒源代码阅读平台,自我感觉良好,呵呵,不过这些没什么可以总结的似乎,都是一些命令的使用和基本设置,网上资料也都很多,这里就不多说了,另外我还安装了c.vim,蛮有意思的小工具,在编程过程中可以省去很多事,用起来比较方便。
有兴趣的可以看看这个:
http://www.maycode.com/index.php/linux/54-linuxdevelop/1364-editor.html
2、项目方面的进展,代理进程部分新增了用于通信的空间分配和优先级跃迁,同时也找到了我曾经一直困惑的内存泄漏问题的根源,不过,这个很不好意思,是自己的失误,当时只考虑了错误处理时的内存释放,用完之后并没有自己主动释放。以后要谨慎才是。还有一点,上一次,傻傻的定义了一个指针,还有指向任何实体就去应用,又是segment fault,真是faint,最近怎么总是粗心,引以为戒阿。
3、交叉环境的建立
第一阶段:
1、安装一种linux
2、以普通用户登陆
3、下载目标机上运行系统所需要的软件。我下载的是:
binutils-2.15.tar.bz2
crosstool-0.43.tar.gz
gcc-3.4.4.tar.bz2
gdb-6.5.tar.bz2
gdb-6.5.tar.gz
glibc-2.3.5.tar.bz2
glibc-linuxthreads-2.3.5.tar.gz
linux-2.6.8.tar.bz2
linux-2.6-virtex.tar.gz
linux-libc-headers-2.6.12.0.tar.bz2
rrcs_test.patch
4、修改crosstool-0.43.tar.gz解压后的demo-powerpc-405.sh
将eval `cat powerpc-405.dat gcc-4.1.0-glibc-2.3.6.dat` sh all.sh –notest改为你刚下载的版本
即:eval `cat powerpc-405.dat gcc-3.4.4-glibc-2.3.5.dat` sh all.sh –notest
5、在/opt目录下建个crosstool的文件夹,并改变其所有者
#mkdir /opt/crosstool
#chown $USER /opt/crosstool
6、先unset LD_LIBRARY_PATH。
7、 安装语法分析程序生成器bison/flex,执行apt-get install bison flex
8、 保证/bin/sh的连接对象为bash。
9、运行demo-powerpc-405.sh
$sh demo-powerpc-405.sh
10、等待
11、添加环境变量
#vi /etc/profile
加入:PATH="$PATH:/opt/crosstool/gcc-3.4.4-glibc-2.3.5/powerpc-405-linux-gnu/bin"
第二阶段:
1、解压linux-2.6-virtex.tar.gz
tar zxvf linux-2.6-virtex.tar.gz -C ~/work(my work dir)
cd ~/work/linux-2.6-virtex
2、在EDK下生成BSP,取出其中的文件xparameters_ml300_703.h至linux内核源文件夹中的
arch/ppc/platform/4xx/xparameters
cd arch/ppc/platform/4xx/xparameters
cp xparameters_ml300_703.h ./
修改其中的xparameters.h文件
vi xparameters.h
找到#if define(CONFIG_XILINX_ML300)
将下面一句中的#include改为*_703.h,即:#include "xparameters_ml300_703.h"
3、修改内核源文件顶层Makefile文件
cd -
vi Makefile
将 ARCH ?= $(SUBARCH)
CROSS_COMPILE ?=
改为ARCH := ppc 注:指定硬件平台
CROSS_COMPILE = powerpc-405-linux-gnu- 注:指定交叉编译工具
4、打内核补丁
cp ~/downloads/rrcs_test.patch ./
patch -p1 --dry-run < rrcs_test.patch 注:测试应用patch,不会对内核源码有所改动
patch -p1 < rrcs_test.patch 注:安装补丁
5、前辈们已经对内核进行了配置,可以沿用前辈的配置。
将前辈生成的.config文件拷到当前文件加下
cp .config ./ 注:这样就省下了make menuconfig的操作了,大大简化新手上路里程
6、编译内核
4、关于在vi中粘贴复制的问题
向vi中粘贴:
如果只是想使用系统粘贴板的话直接在输入模式按Shift+Insert就可以了。这个我试过了,好用。
但是想从vi往外面粘贴,比如把vi中复制的内容粘贴到网页中,却不知道改如何去做。
下面是我从网上找到的相关资料:
vim帮助文档里与粘贴板有关的内容如下:
1. vim有12个粘贴板,分别是0、1、2、...、9、a、“、+;用:reg命令可以查看各个粘贴板里的内容。在vim中简单用y只是复制到“(双引号)粘贴板里,同样用p粘贴的也是这个粘贴板里的内容;
2.
要将vim的内容复制到某个粘贴板,需要退出编辑模式,进入正常模式后,选择要复制的内容,然后按"Ny完成复制,其中N为粘贴板号(注意是按一下双引号
然后按粘贴板号最后按y),例如要把内容复制到粘贴板a,选中内容后按"ay就可以了,有两点需要说明一下:
* “号粘贴板(临时粘贴板)比较特殊,直接按y就复制到这个粘贴板中了,直接按p就粘贴这个粘贴板中的内容;
* +号粘贴板是系统粘贴板,用"+y将内容复制到该粘贴板后可以使用Ctrl+V将其粘贴到其他文档(如firefox、gedit)中,同理,要把在其他地方用Ctrl+C或右键复制的内容复制到vim中,需要在正常模式下按"+p;
3. 要将vim某个粘贴板里的内容粘贴进来,需要退出编辑模式,在正常模式按"Np,其中N为粘贴板号,如上所述,可以按"5p将5号粘贴板里的内容粘贴进来,也可以按"+p将系统全局粘贴板里的内容粘贴进来。
注意:只有vim.gtk或vim.gnome才能使用系统全局粘贴板,默认的vim.basic看不到+号寄存器。
但是不知道Shift+Insert是如何把内容从系统粘贴板复制到vi的。
最后的解决方式是:安装了gvim。
5、关于消息队列还有一些不熟的东西需要记录下来:
常用命令:
修改消息队列大小:
root:用户: /etc/sysctl.conf
kernel.msgmnb =4203520
#kernel.msgmnb =3520
kernel.msgmni = 2878
保存后需要执行 sysctl -p ,然后重建所有消息队列
ipcs -q : 显示所有的消息队列
ipcs -qt : 显示消息队列的创建时间,发送和接收最后一条消息的时间
------ Message Queues Send/Recv/Change Times --------
msqid owner send recv change
65536 mas Not set Not set May 15 15:56:39
98305 mas May 15 15:59:22 May 15 15:59:22 May 15 15:56:39
ipcs -qp: 显示往消息队列中放消息和从消息队列中取消息的进程ID
------ Message Queues PIDs --------
msqid owner lspid lrpid
65536 mas 0 0
98305 mas 21941 21941
ipcs -q -i msgid: 显示该消息队列结构体中的消息信息:
例如:ipcs -q -i 98305
Message Queue msqid=98305
uid=512 gid=500 cuid=512 cgid=500 mode=0600
cbytes=0 qbytes=4203520 qnum=0 lspid=21941 lrpid=21941
send_time=Thu May 15 16:00:19 2008
rcv_time=Thu May 15 16:00:19 2008
change_time=Thu May 15 15:56:39 2008
ipcs -ql : 显示消息队列的限制信息:
------ Messages: Limits --------
max queues system wide = 2878 //最大进程数
max size of message (bytes) = 8192 //队列中最大消息长度
default max size of queue (bytes) = 4203520
阅读(1057) | 评论(1) | 转发(0) |