<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[IamGooday的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/IamGooday</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; IamGooday]]></copyright><item><title><![CDATA[利用BDI实现GDB调试]]></title><link>https://blog.youkuaiyun.com/IamGooday/article/details/8738437</link><guid>https://blog.youkuaiyun.com/IamGooday/article/details/8738437</guid><author>IamGooday</author><pubDate>Fri, 29 Mar 2013 22:24:20 +0800</pubDate><description><![CDATA[BDI本身提供的命令还是比较有限的，从调试的角度来看的话，也就是可以知道当前的PC指针和对应的核寄存器，无法实现任何高级的功能。因此利用GDB提供的remote功能实现硬件GDB调试，几乎是实际调试的必然之选。
笔者是用BDI调试uboot的一部分功能(fwupdate我们自己写的一个固件升级程序)，历经坎坷，总算摸到了点门道。以下分享一下这个的关键过程。
1.启动
在完成正常烧写后，硬件应]]></description><category></category></item><item><title><![CDATA[CPU占用率100%的问题追踪]]></title><link>https://blog.youkuaiyun.com/IamGooday/article/details/7766076</link><guid>https://blog.youkuaiyun.com/IamGooday/article/details/7766076</guid><author>IamGooday</author><pubDate>Fri, 20 Jul 2012 10:06:17 +0800</pubDate><description><![CDATA[在网页上增加了一个banding选择的选项，同时也包括了restore的功能，结果在测试时发现网页访问(尤其是resotre后)时不时会出现CPU 100%被占用，这下郁闷了，赶紧想折子确认问题，憋了半天总算想到一些方法，本文记录了整个找问题的过程，也可谓一波三折。
先总结一下用过的法子：
1. printf打印
2. oprofile
3. gdb
4. proc文件系统


1]]></description><category></category></item><item><title><![CDATA[oprofile二三事]]></title><link>https://blog.youkuaiyun.com/IamGooday/article/details/7588544</link><guid>https://blog.youkuaiyun.com/IamGooday/article/details/7588544</guid><author>IamGooday</author><pubDate>Mon, 21 May 2012 20:34:45 +0800</pubDate><description><![CDATA[oprofile是调试系统瓶颈的利器，利用它，可以分析得到当前系统所有函数的各种信息，如CPU占用率等。
编译与安装
Pelco的SVN库中已经导入了oprofile，它位于：
http://svn.pelco.org/repos/omons-3rdparty/oprofile-0.9.4/


只要将它checkout出来，然后直接ombuild build, ombuild insta]]></description><category></category></item><item><title><![CDATA[uboot change based on DM368, for BDI3000 bootup]]></title><link>https://blog.youkuaiyun.com/IamGooday/article/details/7048310</link><guid>https://blog.youkuaiyun.com/IamGooday/article/details/7048310</guid><author>IamGooday</author><pubDate>Wed, 07 Dec 2011 08:10:41 +0800</pubDate><description><![CDATA[u-boot Version: 1.6.0
1. u-boot/drivers/serial/serial.c   
Function: calc_divisor()
Line: 157
Modification: 

   return 0x0d;
Description: The original way to calculate serial baudrate is wrong]]></description><category></category></item><item><title><![CDATA[Serivce configuration on Ubuntu]]></title><link>https://blog.youkuaiyun.com/IamGooday/article/details/6761653</link><guid>https://blog.youkuaiyun.com/IamGooday/article/details/6761653</guid><author>IamGooday</author><pubDate>Thu, 08 Sep 2011 20:41:20 +0800</pubDate><description><![CDATA[Environment:
OS: Ubuntu 10.4.1
Login Name: jeff
 
Service: SSH
Install




sudo apt-get install openssh-server




 
Configu]]></description><category></category></item><item><title><![CDATA[u-boot+kernel不能正常运行]]></title><link>https://blog.youkuaiyun.com/IamGooday/article/details/6757090</link><guid>https://blog.youkuaiyun.com/IamGooday/article/details/6757090</guid><author>IamGooday</author><pubDate>Wed, 07 Sep 2011 16:07:11 +0800</pubDate><description><![CDATA[单独的u-boot可以正常运行，而kernel配合04000010版的uboot也能正常运行。但当前的uboot配合kernel却不能正常boot,会在kernel串口设置的地方出错。
整理尝试结果：
uboot.10Pelco + kernel   == OK
uboot]]></description><category></category></item><item><title><![CDATA[cpio文件打包和解包]]></title><link>https://blog.youkuaiyun.com/IamGooday/article/details/6753064</link><guid>https://blog.youkuaiyun.com/IamGooday/article/details/6753064</guid><author>IamGooday</author><pubDate>Tue, 06 Sep 2011 13:10:56 +0800</pubDate><description><![CDATA[设文件名initramfs.cpio.gz


打包操作：
find . | cpio -o -H newc | gzip > ${myDIR}/initramfs.cpio.gz

 
解包操作：
gunzip initramfs.cpio.gz
cpio -]]></description><category></category></item><item><title><![CDATA[编译出错提示 error trying to exec 'cc1': execvp: No such file or directory]]></title><link>https://blog.youkuaiyun.com/IamGooday/article/details/6751955</link><guid>https://blog.youkuaiyun.com/IamGooday/article/details/6751955</guid><author>IamGooday</author><pubDate>Tue, 06 Sep 2011 07:42:07 +0800</pubDate><description><![CDATA[在我的Ubuntu系统中，编译程序出现此提示。
网上说法一大堆，或者编译器坏了，或者与其他软件冲突之类。似乎都不符合我的情况。于是自查，

查询后获知其实我的编译器已经有了这个cc1，

/usr/local/arm/4.4.1/libexec/gcc/arm-none]]></description><category></category></item><item><title><![CDATA[uboot环境变量不能保存的调试]]></title><link>https://blog.youkuaiyun.com/IamGooday/article/details/6750534</link><guid>https://blog.youkuaiyun.com/IamGooday/article/details/6750534</guid><author>IamGooday</author><pubDate>Mon, 05 Sep 2011 18:44:10 +0800</pubDate><description><![CDATA[在我的板子上设计了2个uboot，分为大小u-boot。小u用于启动，因为程序小，所以速度快，而且适合放在单个块(128K)中.大u包含网络，功能全面。
在实际的启动过程中，小u出现不能保存环境变量的问题，本文用于记述我的调试过程。
出现该问题首先想到的是修改配置文件，把所有]]></description><category></category></item><item><title><![CDATA[driver porting from Android to My kernel]]></title><link>https://blog.youkuaiyun.com/IamGooday/article/details/6748171</link><guid>https://blog.youkuaiyun.com/IamGooday/article/details/6748171</guid><author>IamGooday</author><pubDate>Sun, 04 Sep 2011 23:35:22 +0800</pubDate><description><![CDATA[1. Add the option in Menuconfig
1)  add following code into drivers/char/Makefile


obj-y                          += radio/

2) add f]]></description><category></category></item><item><title><![CDATA[switch off UDP checksum in kernel]]></title><link>https://blog.youkuaiyun.com/IamGooday/article/details/6741866</link><guid>https://blog.youkuaiyun.com/IamGooday/article/details/6741866</guid><author>IamGooday</author><pubDate>Fri, 02 Sep 2011 10:07:39 +0800</pubDate><description><![CDATA[Just for my memo
In IPv4, the UDP checksum is not a forced definition, if you do not do checksum. it is still ok to talk each other. How ev]]></description><category></category></item><item><title><![CDATA[kernel version]]></title><link>https://blog.youkuaiyun.com/IamGooday/article/details/6741810</link><guid>https://blog.youkuaiyun.com/IamGooday/article/details/6741810</guid><author>IamGooday</author><pubDate>Fri, 02 Sep 2011 09:40:33 +0800</pubDate><description><![CDATA[Just for my memo:
I met problem in generating a kernel with correct version.  A "+" symbol is always added into the kernel version. And my]]></description><category></category></item><item><title><![CDATA[ALSA交叉编译与测试]]></title><link>https://blog.youkuaiyun.com/IamGooday/article/details/6323863</link><guid>https://blog.youkuaiyun.com/IamGooday/article/details/6323863</guid><author>IamGooday</author><pubDate>Thu, 14 Apr 2011 17:59:00 +0800</pubDate><description><![CDATA[情况简介ALSA是目前Linux系统上大量采用的音频设备库，通过Alsa架构能分离驱动和应用的开发。Alsa为上层提供API的同时，也为下层提供了接口，在内核配置的时候指定“支持Alsa”就能得到内核支持，具体位置为：Menuconfig -> Device Drivers -> Sound
card support -> Advanced Linux Sound Architecture，驱动层所添加的音频设备应该也会在这里出现。由于我们的内核已经包含了对应音频设备的驱动，故不做深入。有了Alsa内核驱]]></description><category></category></item><item><title><![CDATA[Linux中断处理过程]]></title><link>https://blog.youkuaiyun.com/IamGooday/article/details/6040443</link><guid>https://blog.youkuaiyun.com/IamGooday/article/details/6040443</guid><author>IamGooday</author><pubDate>Sun, 28 Nov 2010 09:23:00 +0800</pubDate><description><![CDATA[<br />中断被触发后首先通知到的是CPU<br />1.CPU需要判断自己当前所处的模式，根据CPL寄存器的值执行不同操作。如果CPL表明目前正处于内核态，则不需要作切换，相反，如果CPL表明目前是用户态，那么需要将自己标为标为内核态。当然，在标记自己之前，必然会存在一些寄存器的保存以便日后恢复。<br />2. 需要做一些现场保护工作，就是把当前的寄存器存起来以便恢复。这个是跟用户态和内核态无关的，而是CPU当前所处的一个状态的信息保存。<br />3. 终于进入真正的中断了，CPU落到了中断向量表上]]></description><category></category></item><item><title><![CDATA[Linux内核启动]]></title><link>https://blog.youkuaiyun.com/IamGooday/article/details/5786028</link><guid>https://blog.youkuaiyun.com/IamGooday/article/details/5786028</guid><author>IamGooday</author><pubDate>Tue, 03 Aug 2010 18:20:00 +0800</pubDate><description><![CDATA[<br />说到内核启动，很多这方面的资料都是从bootloader(BIOS)开始说起的，严格说来，那时候还没有出现Kernel的概念呢，实际的Kernel是在start_kernel()函数之后才真正启动的。在这之前，主要干的活：<br />1. 解压缩，把未压缩的内核包放在RAM的指定地址，然后从这个地址开始执行。<br />2.体系结构相关的初始化，初始化的目的也是为启动内核做准备，包括页表初始化啊，MMU,Cache，TLB等的初始化啊，最终在完成这些准备工作后跳转到start_kernel开始真]]></description><category></category></item><item><title><![CDATA[逻辑地址、线性地址、物理地址和虚拟地址之间的关系]]></title><link>https://blog.youkuaiyun.com/IamGooday/article/details/4453381</link><guid>https://blog.youkuaiyun.com/IamGooday/article/details/4453381</guid><author>IamGooday</author><pubDate>Sun, 16 Aug 2009 20:28:00 +0800</pubDate><description><![CDATA[本贴涉及的硬件平台是X86，如果是其它平台，嘻嘻，不保证能一一对号入座，但是举一反三，我想是完全可行的。一、概念物理地址(physical address)用于内存芯片级的单元寻址，与处理器和CPU连接的地址总线相对应。——这个概念应该是这几个概念中最好理解的一个，但是值得一提的是，虽然可以直接把物理地址理解成插在机器上那根内存本身，把内存看成一个从0字节一直到 最大空量逐字节的编号的大数组，然后]]></description><category></category></item><item><title><![CDATA[Linux下的内存管理]]></title><link>https://blog.youkuaiyun.com/IamGooday/article/details/4451058</link><guid>https://blog.youkuaiyun.com/IamGooday/article/details/4451058</guid><author>IamGooday</author><pubDate>Sun, 16 Aug 2009 09:41:00 +0800</pubDate><description><![CDATA[对于 Linux下的内存管理，首先从《Linux内核设计与实现》书上的说起。在书里面开篇就开始讲页面管理及其数据结构，这似乎与我们常常听到的段页式管理有所不同。其实，所谓的段页式管理是针对硬件的x86的，x86的系统为了保持与老版本系统的兼容性，采用了段页两级目录管理内存，可参看转载的上一篇文章了解这种管理机制。而事实上，即便Linux在x86平台上也并没是实现真正的段页式管理，所有的段地址最终都]]></description><category></category></item><item><title><![CDATA[内核定时器和时间管理学习笔记]]></title><link>https://blog.youkuaiyun.com/IamGooday/article/details/4448633</link><guid>https://blog.youkuaiyun.com/IamGooday/article/details/4448633</guid><author>IamGooday</author><pubDate>Sat, 15 Aug 2009 09:19:00 +0800</pubDate><description><![CDATA[ 1.在Linux系统中有一个重要的概念:HZ，意为节拍数，它是操作系统级的时间单位重要概念。一般大小为100(所以可以简单理解HZ为系统定义的宏)，但在有些体系结构中有可能是1000或者其他，它表明了每秒钟时钟的可中断次数，时钟中断并非你想让它何时触发就能触发的，还得按着节拍来，这也进一步说明了Linux只是准实时系统，而算不上严格意义上的实时系统。2.与HZ有关的另一个重要概念：jif]]></description><category></category></item><item><title><![CDATA[在只有C盘的windows下无损分区]]></title><link>https://blog.youkuaiyun.com/IamGooday/article/details/4211059</link><guid>https://blog.youkuaiyun.com/IamGooday/article/details/4211059</guid><author>IamGooday</author><pubDate>Sat, 23 May 2009 17:15:00 +0800</pubDate><description><![CDATA[   要装linux，所以必须在windows下分区，当前系统下只有一个C盘。网上搜索，会发现有很多文章提供了不破坏windows还能分区的方法，一般都是用软件PQ PartitionMagic常见版本为8.0，但事实上该软件是共享软件，能下载到的一般都是Demo而已。       而真正可用的版本是Norton PartitionMagic(PQ PM被Norton收购了)，这个版本可用]]></description><category></category></item><item><title><![CDATA[Fedora环境下编译运行带SATA硬盘的内核]]></title><link>https://blog.youkuaiyun.com/IamGooday/article/details/4210916</link><guid>https://blog.youkuaiyun.com/IamGooday/article/details/4210916</guid><author>IamGooday</author><pubDate>Sat, 23 May 2009 16:01:00 +0800</pubDate><description><![CDATA[硬件环境说明HP dc7600台式机，x86系统，硬盘为SATA接口，主板自带intel 82801(ICH7芯片组) SATA控制器软件环境说明Fedora 6，内核版本2.6.18，该内核是为fc6发行版定制，可能与通用版本(www.kernel.org)略有不同（配置方面），具体情况不知。编译安装过程1．获取内核源代码对于Fedora 6，获取源代码的方式有以下3种：]]></description><category></category></item></channel></rss>