一直在折腾前段时间画好的dm642+lpc4357板子,说明下这个板子的结构:

  • 主芯片为DM642,这个片子很老了,但因为对这个片子熟悉,别折腾
  • 没有给DM642加FLASH,配了一片LPC4357,DM642的代码需要它HPI来加载,至于为何选这个芯片,

    主要是它带有USB2.0的PHY,关键是之前使用的时候都还算顺利(我都使用eclipse+arm gcc)
  • 两路视频输入(不能同时输入,支持切换)
  • 一路LCD显示(AT070TN92的屏)
  • DM642上的一路以太网(10M/100M)
  • LPC4357上的USB2.0,RS485以及RS232(这个主要调试时用下)

真是好事多磨,之前因为焊接问题搞了一阵子,后来HPI也遇到问题,终于弄通了,记录下!

通过LPC4357的EMC连接DM642的HPI16,测试硬件自然力求简单,超简单的程序(本来HPI的结构也很简单):

void HPI_test(void)
{
volatile uint32_t pdat;
HPI_Init(LPC_EMC_BASE);
volatile uint32_t *pAddr=(volatile uint32_t*)HPIC_ADDR_RBASE;
uint32_t x;
while(1)
{
pAddr=(volatile uint32_t*)HPIC_ADDR_RBASE;
pdat = *pAddr; pAddr=(volatile uint32_t*)HPIA_ADDR_RBASE;
pdat = *pAddr; pAddr=(volatile uint32_t*)HPIDI_ADDR_RBASE;
pdat = *pAddr; pAddr=(volatile uint32_t*)HPIDF_ADDR_RBASE;
pdat = *pAddr; HPI_Write(0x22,0x12345678);
x=HPI_Read(0x22);
}
}

通过单步调试来查看变量值来验证正确性。一开始不如所意,偶然发现读HPIC的值是正确的,但其它的就不行了,

调整EMC的时序,折腾几晚(晚上弄的,不是公事)都不行,简单的东西不通真是想破脑袋,分析理顺了一下:

  1. 读HPIC的时候值正确,说明OE和CS及部分数据线(HPIC不是每个位都可以在DSP端写,不能都测试)没有问题;
  2. 读其它寄存器的时候虽然不正确,但不是HPIC的值,说明地址线至少有变化,时序值得怀疑;
  3. 但是写HPIC不成功,很有可能HRW或者WE的问题,当然还有可能是时序问题;
  4. 仔细看了HPI的线,似乎都没有上下拉,说明HRW悬空的可能性不大;

好吧,三个方面:时序问题、焊接问题(之前出过问题总会不那么信任),WE(严重怀疑)。异步读写是最简单的操作,

我把各个寄存器的时间都设置成最长,那么时序问题的可能性很小了,WE能有什么问题呢,想不明白。

只好继续看参考手册,又去看数据手册,想找找波形图,找到了个很简陋的波形图,发现PB=0的时候WE没有动作,而PB=1

的时候WE动作了,那么问题来了,仔细地把STATICCONFIG中的PB一个单词不放过地看,终于找到问题了:

** Remark: When PB is set to 0, the WE signal is undefined or 0.

You must set PB to 1, to use the WE signal. **

坑爹啊,本来看这个位的名称就是Byte lane state,跟WE又扯上关系了!设置好后,所有问题解决。后来HPI BOOT的问题就一次测试搞定了:

写了个小python程序将DM642的代码(中断向量需要在0地址)生成的.out文件中需要加载的段转化成c程序,并组成一个链表,然后通过HPI

写到DSP中并给一个DSPINT(需要设置DM642的启动方式为HPI),成功!

[原创]dm642_HPI调通并boot成功的更多相关文章

  1. 怎样调通微信支付及微信发货通知接口(Js API)

    怎样调通微信支付及微信发货通知接口(Js API) 微信支付提供了一个支付測试页面,微信支付正式使用须要測通支付.发货通知接口 .告警接口.维权接口.告警接口.维权接口非常easy.支付界面调通也相对 ...

  2. 全志R58平台调通s5k5eya(RAW+MIPI)

    全志R58平台调通s5k5eya(RAW+MIPI) 2017/5/31 10:30 版本:V1.1 1.前期使用的是s5k5eyx的ISP的固件/tuning 文件 Y:\s5k5eya_r58_d ...

  3. 2016最后一贴,终于调通一个测试示例,并发现一个BUG???

    真的难点在于第一次调通.纠结五天,终于搞出界面. 也发现了一个书上代码,编辑用户时死活不通的情况,我将Links去了,改在data里,我X,,全OK了.. 原来的代码: onAdd: function ...

  4. 【二】调通单机版的thrift-C++版本

    [任务2]调通单机版的thrift-C++版本 [任务2]调通单机版的thrift-C++版本 创建文件 安装boost开发工具 拷贝文件 [可忽略此步骤,如果c++代码直接编译无误的话] 编译 创建 ...

  5. 【一】调通单机版的thrift-python版本

    开发步骤说明 [任务1]调通单机版的thrift-python版本 [任务1]调通单机版的thrift-python版本 安装thrift 创建thrift模块文件并编译 开发python版的clie ...

  6. [ 原创 ] centos安装tomcat,启动成功 无法访问

    https://blog.csdn.net/realjh/article/details/82048492 Linux下Centos7对外开放端口 2018年08月25日 09:53:42 jeter ...

  7. [原创] 如何PCB通流能力计算

    一.计算方法如下: 先计算Track的截面积,大部分PCB的铜箔厚度为35um(不确定的话可以问PCB厂家)它乘上线宽就是截面积,注意换算成平方毫米. 有一个电流密度经验值,为15~25安培/平方毫米 ...

  8. [原创-性能调优]借助AWR报告分析解决oracleCPU过高的问题

    简介:在oracle数据库中,有两个非常实用的自带监控工具EM(Enterprise Manager)和AWR(Automatic Workload Repository).其中,通过AWR报告可以生 ...

  9. 快速调通支付宝当面付Demo

    1.访问如下地址: https://auth.alipay.com/login/ant_sso_index.htm?goto=https%3A%2F%2Fopenhome.alipay.com%2Fp ...

随机推荐

  1. Java程序猿学习C++之字符串

    #include <iostream> #include <string.h> using namespace std; int my_len(const char *str) ...

  2. ElasticSearch怎样加入,检索数据

    Elasticsearch是一个分布式的文档(document)存储引擎.它能够实时存储并检索复杂数据结构--序列化的JSON文档.换言说,一旦文档被存储在Elasticsearch中,它就能够在集群 ...

  3. [Node.js] Introduction to apiCheck.js

    timeoutLog.js: var apiCheckFactory = require('api-check'); var myCheck = apiCheckFactory(); module.e ...

  4. Linux shell的&&和||--转载

    Linux shell的&&和||   shell 在执行某个命令的时候,会返回一个返回值,该返回值保存在 shell 变量 $? 中.当 $? == 0 时,表示执行成功:当 $? ...

  5. Bash判断文件夹(目录)是否存在

    #!/bin/bash if [ -d DirName ]; then echo 'Dir exist' else echo 'Dir not exist' fi

  6. PS之火焰铁锈字

    效果图 素材一:将下图在PS中打开,选择菜单:编辑>定义图案,命名后关闭图案 素材二 1.新建如下画布 2.将素材二拖入新建好的画布(使用移动工具) 3.先将文字图层复制4次(ctrl+J)并且 ...

  7. PHP四种传参方式

    test1界面: <html> <head> <title>testPHP</title> <meta http-equiv = "co ...

  8. 简单登录案例(SharedPreferences存储账户信息)&联网请求图片并下载到SD卡(文件外部存储)

    新人刚学习Android两周,写一个随笔算是对两周学习成果的巩固,不足之处欢迎各位建议和完善. 这次写的是一个简单登录案例,大概功能如下: 注册的账户信息用SharedPreferences存储: 登 ...

  9. Android Studio中常用插件及浅释

    博客: 安卓之家 微博: 追风917 CSDN: 蒋朋的家 简书: 追风917 博客园:追风917 插件可以来这个仓库查找:Android Studio Plugins 这里给出几个平时常用到的as插 ...

  10. 黑马程序员-集合(二)contains()方法的内部探索

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 我们知道集合是用来存储对象的.在他们实现了众多的接口我们以Arraylist为列子 所有已实现的 ...