Cross-compile pciutils

目前busybox的lspci不能显示足够可用的信息,需要重新交叉编译一个lspci。 下载pciutils源码 make 修改Makefile CROSS_COMPILE => ppc-linux- ZLIB => no DNS => no SHARED => no 修改lib/config.h和lib/config.mk 注释掉 PCI_ARCH_I386 PCI_HAVE_PM_INTEL_CONF PCI_HAVE_64BIT_ADDRESS 删掉lib下面所有的.o文件 重新make 搞定。

Freescale MPC8309调试

10/09/2011 第一步是连接仿真器。 打开ltib默认的MPC8309配置,修改 DDR大小为128M NOR Flash为8bit OK,连接上仿真器,仿真器居然没有8309的选项,郁闷,下载了8309的补丁包,EPPC_8.8_830X_b101126.exe。安装,可以选择8309了。又在freescale上瞄了一下,CW8.8.5的patch可以支持win7,这是个好消息,因为之前都是在虚拟机用的,贼不方便。安装好patch,在按照说明装好了驱动,又拿8315的板子连了一下,通过。 好的,连上8309,擦写Flash,显示”连接失败”。新建一个8309的工程,点击Debug->connect,显示无法复位CPU或者无法将CPU置于DEBUG模式,看来是CPU没有正常工作。 郁闷了,检查8309配置,复位配置字为1100,没问题;JTAG设计也没问题;复位没问题;晶振也没问题。最后发现PCI_SYNC_IN没有和PCI_SYNC_OUT连接,导致CPU没有时钟。还好PCI_SYNC_IN通过一个下拉电阻引了出来,不然这个板子就废掉了。 将33M时钟飞到PCI_SYNC_IN上,在次连接一下,成功!擦除Flash,成功!校验Flash,不对。到底是没擦除还是校验错呢?还好Flash上Busy信号接了灯,在擦一下,发现灯亮了,所以应该是校验错误。因为8309和8315是一样的,将8309的NOR Flash配置改成与8315一样。校验成功! 接着烧写u-boot,改为NOR Flash启动,串口显示启动信息,但是出现”Error in I2C Direction reg read”,搜索u-boot源码,原来freescale公版会先读一个EEPROM。注释掉。 这次显示了”Not a microcode”,然后就在打印NET:后停掉了。跟踪了代码,发现是在初始化QE的UEC的时候执行初始化TX&RX的时候一直没有等到命令执行完成。会不会和”Not a microcode”有关呢。查看源码发现这个是因为u-boot给QE下载微代码的时候打印的,因为我的u-boot是没有这个微代码的。但是后面程序有设置启动微码指令,注释掉。发现还是这个问题。 10/10/2011 难道是QE输入时钟的问题,我们接的是33M的,6倍频到198M。公版是25M,8倍频到200M。而MII的时钟是25M。 换成25M时钟,修改QE PLL倍频,发现还是一样。 会不会是8309必须需要一个微码呢?google、看QE的手册,没有什么可用的资料。在次检索ltib,突然在tools_8309som下面的nor_flashing目录下面发现一个好东西”iram_mpc8309_r1.bin”。哈哈,找到了。用USB TAP烧写到指定位置。”=>”提示符有了。ping了一下地址。发现没有读到PHY ID。…

Debug SK2000L

给客户做的一款低端板子,其实就是8241+5*DM9000。之前用的Intel的82551太贵了,而且已经停产。市面上其他网络芯片的厂商基本上也没有PCI总线的网络芯片。 板子到手后,5V、3V3、1V8,测量均无短路。 好的,上电电压正常,烧写CPLD,但是串口打印信息并没有按照想象的出现。问题麻烦了。 重新烧了一块FLASH,换了依然没有打印。 看来要动用重武器了。 测量复位、时钟输入、SDRAM时钟均无问题。看来PLL应该发挥作用了。 接着测量Boot Flash的CS,复位后有波形,但是会一直保持。难道是DM9000前面总线驱动的逻辑错了。 审阅了以下CPLD逻辑,果然有错误,改掉后在量CS,发现每次复位后只出现13次。 这个是不应该的,因为前面读u-boot应该会保持一段时间。拿公司另外一块同平台的板子测试印证了我的想法。 然后给郑州的一位同事电话,希望得到一些提示。结果很遗憾,答曰看启动配置。。。。。 这个是Copy的图,应该是不会有问题的。 难道还是CPLD逻辑的问题?我改了以后又用示波器测了一遍,应该没问题的啊。不会是开始烧坏了吧。算了,还是把不用的逻辑禁掉吧。 奇迹出现了,久违的启动信息出来了。看来就是逻辑问题。   接着配置了一路DM9000,probe成功,发送超时,cat /proc/interrupts无中断,量中断管脚是有的。怀疑是发送设置定时器,结果没有中断清除定时器。改回并行中断,ok。在改回去串行中断,ok。估计是'/IRQ1/S_CLK'在拷逻辑的时候忘了加反向。 之后5片DM9000全部找到。   TODO:u-boot下无法配置RCS2,准备飞线将RCS1和RCS2对调。   Added on 08/01/2011 PS: 悲剧,今天测量网卡速度只有30Mbps。

千里江陵一日还

早上7:20坐南航飞机从北京T2到南京禄口,耗时2小时。 下午5:14坐G154从南京南站到北京南站,耗时4小时7分。

使用Keil编译NXP 2366的I2C问题

今天同事发现使用Keil编译器编译NXP 2366后,原本在用ADS编译可以正常跑通的I2C出现了错误。 访问RX8025的时候,写寄存器0为0xA0是没问题的,读RTC寄存器也没有问题,但是当写其他寄存器或者写寄存器0为其他数值时,总是会超时。加了一些调试信息,发现在写完第一个数据后,I2C总线无响应(既没有应答也没有无应答)。 怎么测试都不行。最后google之,发现有篇文章也是使用Keil编译后出错,解决方法是去掉优化。 于是……设置Keil不优化程序。 问题解决。

OpenSSL RSA

genrsa - generate an RSA private key [crayon-69ce9cae5abf1404258503/] 产生私钥 [crayon-69ce9cae5abf6233131056/] rsa - RSA key processing tool [crayon-69ce9cae5abf7128984565/] rsautl - RSA utility [crayon-69ce9cae5abf8532424792/] [crayon-69ce9cae5abfa436093997/] [crayon-69ce9cae5abfb377410547/]