其实我对intel的芯片了解不多,对X86也没怎么研究,最多知道个实模式、保护模式。天天对着x86平台的PC,但也没动力去研究,好比当初买个android手机,也想过搞搞app什么的,结果,还是当成一个手机来用。现在,趁着机会,上网搜索一些和intel的atom处理器有关的资料。
遇到一个Linux文件系统因bios时间错误变成只读的问题
正在进行的项目所用的系统是基于ubuntu构建的,前文也有说明。由于某些原因,需要在一块主板上用dd命令拷贝已经做好的系统镜像到硬盘,然后将这个硬盘换到另一块板子上使用。近期发现一个问题,就是将拷贝好系统的硬盘换到新的主板上使用,启动时系统变成只读系统。变成只读系统时,只读系统的提示信息如下:
Linux终端下打印带颜色的信息
很早之前在学习Makefile的时候,对linux的shell字体颜色有一点点研究。在使用ffmpeg工具时,也看到带有不同的颜色的信息输出,比如红色表示错误信息。现在,重新用代码来实现输出不同的颜色的打印信息。
遇到一个日志文件变化带来的文件句柄问题
正在进行的项目中有个系统调试日志存储的功能,需要存储打印信息。测试部反馈了一个bug:调试日志文件有时候不更新。对照代码,项目用的代码和之前项目的代码是一样的。感觉没什么问题,我自己测试没发现有不更新的情况,但测试部已经反馈过几次了,肯定有问题。项目deadline很快到了(按计划,应该是本文发表前4天已经是deadline了),——也正因为如此,开始了本年第一次周末加班。项目经理不放过这个问题,经分析代码,最终算是解决了问题。
遇到一个在linux下无法跨网段发送接收广播包的问题
正在进行的项目中有个网络广播包搜索设备的模块,需要在上位机发送搜索设备的XML命令,然后设备端再发真正的搜索广播包到交换机上所有的连接设备。测试部反馈了一个bug:无法跨网段搜索到设备,同一个网段内,搜索是正常的。对照代码,设备端的发广播包的代码和上位机直接发广播包的代码是一样的。感觉没什么问题,但就是不成功,肯定有问题。因为广播包收、发模块在其它项目一直使用,一直OK,现在出问题了,很郁闷,加上项目deadline快到了,项目经理直接说不能因为这个问题影响了发布。于是只能自己独立广播包模块出来单独测试,专门找此bug。终于一天多的时间,终于解决了问题。
再记一下sscanf的一个小问题
正在进行的项目中有个网络传输模块,需要在设备端将上位机发送的XML命令解析出来并转发到其它模块。在我测试一个获取数据的命令时,发现上位机读取到的数据是错误,看XML命令格式,明明是对的,但读到的数据就是不正确,肯定有问题。因为网络传输模块在其它项目一直使用,一直OK,现在出问题了,很郁闷。于是使出printf大法跟踪、终于找到问题原因。原来,又是sscanf搞的问题。记得小弟刚来这家公司时接手前人写的ftp模块,里面大量用了sscanf,还专门写了篇文章。现在又遇到了。
遇到一个打开文件方式“w+”和“a+”的问题
正在进行的项目中有个日志存储模块,需要在设备端将日志数据写到存储介质——其实就是硬盘,就是一个文件。在我测试时,发现上位机读取到的日志数据不全,明明登陆到设备看有100多KB,但读到的日志才2行,肯定有问题,另外,设备存储的日志文件内容也有乱码出现。因为这个模块在其它项目一直使用,一直OK,现在出问题了,很郁闷。而且该模块嵌入到其它大的功能模块,后来跟踪、独立测试,终于找到问题原因。当这个“小”问题解决时,都已经过了大半天了,架构如果复杂,以至于要细细跟踪,不同平台的差别,以至于无人注意。
遇到一个gcc编译器版本导致的运行结果有差异的问题
正在进行的项目中有个网络模块,需要在上位机将数据包加密,然后在设备端将数据包解密。两者使用的加密方法是可逆的(大概是异或之类的)。在我测试时,发现设备上解出来的数据不正常,得不到上位机未加密前的数据。因为这个模块在其它项目一直使用,一直OK,现在出问题了,很郁闷。而且该模块嵌入到其它大的功能模块,后来将加密、解密模块独立出来测试。当定位到解密这个点上,都已经过了大半天了。
使用U盘制作纯dos系统
前面文章一直提到的设备,需要对主板上的bios升级,bios文件由厂家提供,烧写工具也由厂家提供,而烧写方法只有一句:在纯dos环境下,运行xxx程序即可。而公司某些部门不懂如何进入“纯dos环境”,其实我也不懂,但既然人家问了,我也想看看。最主要、最重要的原因是,如果我不升级bios,那个flash驱动就无法进行测试,我不能依赖某部门的进度。无奈,只得自己动手学习了。于是,利用周末的时间,看了一下相关的东西,发现真的不难,困难的是,没人去看,去学。
解决ubuntu系统udev多网卡名称变化的问题
设备上有2个网卡,虽然留意了,在设置也区别了eth0和eth1,直到设置eth0无效时才发现有了问题。这个问题其实也是我们自己搞出来的。因为我们的项目使用了硬盘,使用时会将一个设备上的硬盘直接拿到另一个设备上使用,当原来的设备的系统已经有了网卡的配置后,再换一个新硬件平台上(虽然还是同一个硬盘),这些网卡名称就会改变。