http://blog.sina.com.cn/xdlovecanon[订阅]
个人资料
音乐播放器
图片幻灯
Friends
婧婧

厨艺呈指数曲线增长

晓阳

给俺在德国好好混!

沈小牛

口头禅——烦死了!

娇娇

逛街狂

访客
读取中...
博文
VIA的最后一站(2009-10-28 13:45)
    接到威盛的面试通知是大前天下午睡得正是晕头转向的时候,电话里告诉我第二天上午11:00到骊苑酒店参加面试,最好提前10分钟到,大概记下了地址。
   
    第二天十点四十分左右到了骊苑酒店,上二楼多功能厅,就看到有七八个来面试的都在外面等。威盛的招聘人员过来让我填个登记表,填表的时候,看到班上一位同学出来了,他已经面完,说是被涮了。填完表在外面等了不到一分钟就有人通知我进去。第一轮面试跟我当时华为实习技术面试的场面差不多。很多张桌子,一个面试官对一个应聘者。我的面试官是一个看起来很沉稳的人。介绍完坐下后,他说:“我先给你介绍一下部门组成吧。”然后就很详细地给我介绍了一下威盛北京的组织结构,每一部分都是做什么的,还重点介绍了一下我应聘的部门,听完后我觉得跟自己的方向挺对口。他问我对刚才说的还有什么问题,我说:“刚才您提到我们部门主要是基于ARM微处理器,请问是ARM7还是ARM9?”他说ARM9也有,但主要还是ARM7。
 
    接下来看他翻了我的笔试试卷,问我怎么后面的几道题没有答,我说因为后面涉及到LINUX,UNIX的

    前天总算是把板子画完了。博创那块44B0的板子小师弟最近一直在用,说是下载程序不正常了。具体表现为:从十几天之前起,有时候就下不进程序。拔下来放一段时间就又可以下。他怀疑是哪儿接触不良或者虚焊了,把CPU,FLASH,SDRAM通通加焊了一遍,还是没用,最近就完全没反应了。我的PCB也完成了,就决定查查原因。


    仿真器是博创的UArmJtag,代理软件是UArmJtag2.0。我通过JTAG向BOOT FLASH里面烧BOOTLOADER,UArmJtag2.0显示无异常。但是下载完成后通过UArmJtag2.0读取FLASH中的数据,为全F,也就是说根本就没烧进去。一直就觉得UArmJtag2.0这个代理软件做得有些不太完善,交互性不好。怀疑会不会是这块BOOT FLASH出问题了。于是用ADS+UArmJtag2.0进行仿真,在SDRAM中调试。加载完成后通过AXD查看反汇编代码,根本对不上。也就是说在SDRAM中程序也没有正常下载。总不可能FLASH和SDRAM都同时坏了吧!于是就怀疑会不会是JTAG有问题。换了个仿真器,还是不行。


    继续找原因。网上有很多人有类似的问题,大家众说纷纭,但都没有得出结论。


    测了下44B0

关于OPENTCP的一处小bug(2009-04-24 13:37)
    OPENTCP的整个移植+调试终于完成了,ARP、ICMP、TCP、UDP、HTTP几个常见的协议都没什么问题了,并且也实现了一个简单的网口到串口转换。
 
    所谓“山重水复疑无路,柳暗花明又一村”,我可是深刻地体会到了。把OPENTCP整个搬过来,再把和44B0相关的底层驱动写了之后就扔了三个多月,从上周开始调,看那一堆乱七八糟的问题头都疼,折腾了好几天没什么头绪。再捣腾了两天终于可以PING通了,ARP包、ICMP包收发正常之后,UDP,HTTP,TCP也相继很快都解决了!
 
    不过在最后调试TCP的客户端时一直不通。找了半天原因,最终发现是因为Tcp.c中的tcp_connect函数中有点小bug:
    tcp_connect函数的最后三句是:
    tcp_sendcontrol(sochandle);
   tcp_newstate(soc, TCP_STATE_SYN_SENT);
   
    今天早上,44B0板子终于可以PING通了,我长出一口气——折腾了这么久,总算看到进展了!

    从去年12月份把OPENTCP整个搬过来之后,就大概把驱动的部分重新写了下。因为接下来的三个月是AMP最忙的一段时间,几乎天天加班,所以就没再去实验室。板子虽然在宿舍里,可是也懒得去调,一有时间我都用来补觉了。过了三个多月,板子上落了一层灰。上周回来之后,就又重新拾起来了。打算把已经移植好的协议栈好好调一下。这不调则已,一开始调就发现什么乱七八糟的问题都有,当然最明显的就是首先都PING不通。

    因为OPENTCP协议栈里涉及到定时器池的初始化和分配,硬件上我是用44B0的定时器3来实现一个10ms的中断。刚一开始在AXD环境下单步调试,定时器的中断都进不了。开始怀疑是定时器的寄存器设置的问题,对着44B0的datasheet仔细检查了一遍定时器的初始化代码,发现没有不对的地方呀,并且发现在AXD下单步调试的话代码老是跑飞,所以老进不了定时器的中断入口。于是就在定时器中断服务子程序里面加了一个串口输出的操作,然后不用AXD,直接让板子脱机运行,再用超级终端观察显示结果,果然
    之前介绍了使用ARM JTAG仿真器将映像文件加载到ARM处理器内部SRAM中进行程序调试的方法,而在实际操作中,将映像文件加载到外部SDRAM中进行调试的方式更为常见。
 
    要把映像文件加载到SDRAM中,除了要正确设置好映像文件的RO段基地址外(对于一个加载时域和运行时域相同的映像文件来说,RO段基地址实际上就是该映像文件
《类似爱情》(2009-04-03 23:12)

    最近没什么好听的歌,只有娇娇突然发掘出来一首萧亚轩的《类似爱情》,不是特别喜欢萧亚轩的歌,但是有一首例外,就是她的《我要的世界》,这算是第二个例外了,挺不错的!

歌词:
 我站在屋顶 黄昏的光影
 我听见爱情光临的声音
 微妙的反应 忽然想起你
 这默契 感觉像是一个谜
 心里有点急 也有点生气
 你不要放弃行不行

无题(2009-03-16 22:28)

    明天要中期答辩了——虽然对于我来说,不管中期答辩结果如何,都得回学校,不过还是挺想表现好点!

    卡农保佑我好好发挥哦!……

一个由c/C++编译的程序占用的内存分为以下几个部分


一个由c/C++编译的程序占用的内存分为以下几个部分
1、栈区(stack)—— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。

2、堆区(heap)—— 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。

3、全局区(静态区)(static)— 全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 程序结束后由系统释放 

4、文字常量区  — 常量字符串就是放在这里的。 程序结束后由系统释放。

5、程序代码区 — 存放函数体的二进制代码。 

6、例子程序,这是一个前辈写的,非常详细:
//main.cpp
#include 'stdlib.h'
#include 'stdio.h' 
int =&

1、SDRAM的地址线

 

    在我们一般用的什么SRAM啊,PSRAM啊,RAM啊,一般而言都是有多少根地址线,然后可以算出寻址空间,比如有11根地址线,那寻址空间就是2的11次方减1。但是SDRAM是分列地址和行地址的,行、列地址线是复用的,所以有时候我们看到说寻址空间有多大多大,但是看看地址线怎么就那么几根啊,呵呵。SDRAM一般还有2根BANK的线,分成4个BANK,在有的处理器的SDRAM控制模块中,这两根线可能映射到地址线的某两根去。一般芯片常按照以下方式写芯片的配置,比如4Meg x 4 x 16,那这个芯片就是256Mbits。其中16指数据线是16根,中间一个4是只分4个BANK,每个BANK是4Meg。

 

2、SDRAM的初始化

 

SDRAM上电后使用前必须要经过一段初始化操作才可以使用。这个操作过程是标准的过程。这个过程如下

A:   precharge

B:   auto-refresh

C:   Load Mode Register

D:  Normal Read/Write

 

    即一旦VDD和VDDQ同时上电和时钟CLK稳定后,在发送COMMAND INHIBIT或者NOP命令之前,SDRAM需要100

音乐,就像影子一样,伴随着人类发展的脚步,从古到今,经历了各种各样的变迁,发展出了形形色色的种类。从过去的古典音乐一直到现在的hip-hop,一点一点,无声无息地融入到人类社会的发展历程中。在如今这个物欲横流、纷繁复杂的商业社会中,音乐仍然是我们生活中不可或缺的一部分。然而,其中有一点我们大家应该都明白——物质生活需要我们付出的是精力和年轮,而音乐,需要我们投入的仅仅是心境而已。但是,大家是否知道,在这一片心境的田野里,存在着一片世外桃源,至少我是这么认为的,并且我相信绝对有很多人也是这么认为的,那便是卡农,准确的说,是帕赫贝尔的卡农。
 
卡农,其实并非曲名,而是一种曲式,字面上意思是“轮唱”,原意是“规则”,指的是复调音乐的一种写作技法。简单地讲,就是同一旋律以不同的高度在各声部先后出现,交叉进行,互相模仿,互相追随,给人此起彼落、绵延不断的感觉。一个声部