ngswfx

ngswfx

2个粉丝

55

问答

1

专栏

40

资料

ngswfx  发布于  2017-12-10 02:14:54
采纳率 0%
55个问答
3055

有什么办法能知道已经做好的电路板,某个引脚连接到芯片哪个GPIO

 
本帖最后由 ngswfx 于 2017-12-10 11:31 编辑

我这边通常使用别人家的板子,开发东西,或者做自己的产品,主要时解码以及矩阵键盘之类的。

有时候配合比较好的厂家,通常会告诉我他们的epprom加密芯片或者喇叭蜂鸣器连接的主芯片的引脚,或者某个led灯的引脚,或者板子上某些GPIO引出和芯片的连接引脚

但有些时候,厂家找不到了,因为有些硬件时临时接手过来的,研发都跑路了,产品已经无法维护,但客户可能手上压了一些货,需要跑程序,通常这类小单子客户啥都提供不了,都是市场人员,3520D这一类封装到问题不大,遇到3536 3535 3798这一类的芯片,就傻眼了,某些功能不是做不出来,是因为没时间去研究具体的引脚。

但有些时候,例如加密的唯一号读取,等等比较重要的,还是有必要的,但这个东西,一般大家都接到i2c了,通常不会用gpio模拟,相对来说还有个范围,可以碰运气,但喇叭以及其他的GPIO,就没法弄了。


/////////////////////////////////////////
不知道海思那里有没有这种工具,可以直接运行一个程序,我只要将某个引脚规律拉高拉低,然后那个探测程序就可以告诉我,具体的引脚。

//原理上讲的确不难,主要自己写一个有点麻烦,功能实现机制倒是感觉不难,主要是每种芯片的某些引脚的偏移地址等,不太一样,每次遇到一个新的芯片,为了实现这个功能,可能需要导入大量的配置。通常由于某些功能已经确定,例如HDMI输出,SATA硬盘,VI输入等已知确定的部分,那些引脚不可能作为gpio使用了,因为板子上必须要使用这些功能,剩下的gpio口通常也不多了,估计不会超过100个可用,


//大概流程如下:

首先让芯片进入rootfs系统,然后运行这个程序,这个程序,按照列表,快速探测所有GPIO口,并记录目前状态,当发现状态改变,printf出改变引脚的序号即可

而硬件部分,就是把引脚焊接出来,弄个小电路,不按就是拉低,按下就是拉高,然后就看printf的结果,即便由于其他因素,有很多gpio号输出,多次测试后,也可以判断出到底这个引脚是哪个gpio号,这样就可以实现具体的软件功能了


//我感觉主要是折腾一个可用GPIO列表的时间要长于写这个程序的时间,所以有点发怵。

例如:采用ini配置列表
[GPIO_8_6]
offset_address=0x004 //偏移地址
GPIO_MODE_=0x01//一般都是01时GPIO工作模式

然后就是定义一个结构将这个信息都装载好,让程序首先将所有ini列表中的引脚,都开始GPIO工作模式,然后就是读取识别即可


//某个引脚结构
typedef struct
{
int nGPIO_Num;
int nGPIO_Num2;
int nGPIO_MODE;
int nGPIO_offset;
int nLastState;
int nCurState;
}GPIO_LIST;

#define MAX_GPIO_LIST 200

GPIO_LIST gpioList[MAX_GPIO_LIST];


//基地址这类的,某个芯片的某组GPIO都是固定的,就弄另外一个结构存放即可
typedef struct
{
   int nBaseAddr;
..........
............

}GPIO_BASE;

//ini配置
[GPIO_BASE_0]
nBaseAddr=0x00000000

//////////////////////////////////////

大概思路就是这样,不知道有没有相关工具可以干这个事,或者大家有没有什么思路

///////////////////////////////////////////////////

扩展功能设想,好像可以利用这个工具判断出ipc模组,某个开关引脚,例如红外灯,IRCUT这些引脚的实际GPIO口,也可以判断出硬件电路板是否硬件线路异常



我来回答
回答7个
时间排序
认可量排序

david

41个粉丝

368

问答

253

专栏

229

资料

david 2017-12-10 17:23:55
认可0
排除常用端口,和功能端口,然后其他端口按照GPIO分组配置成输出,扫端口,最好端口上可以接个小LED:lol

mengxp

0个粉丝

18

问答

0

专栏

1

资料

mengxp 2017-12-10 21:00:41
认可0
我都是把芯片拆了,然后数字表打到蜂鸣器短路档,然后用表笔扫。
扫到正确了就哔~~

ngswfx

2个粉丝

55

问答

1

专栏

40

资料

ngswfx 2017-12-10 23:53:10
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=81904&ptid=38412]mengxp 发表于 2017-12-10 21:00[/url]
我都是把芯片拆了,然后数字表打到蜂鸣器短路档,然后用表笔扫。
扫到正确了就哔~~[/quote]

BGA呀,拆了,想焊接回去就郁闷了

mengxp

0个粉丝

18

问答

0

专栏

1

资料

mengxp 2017-12-11 09:48:44
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=81910&ptid=38412]ngswfx 发表于 2017-12-10 23:53[/url]
BGA呀,拆了,想焊接回去就郁闷了[/quote]

所以要掌握植球技术~~
如果不会植球,你可以再买一个板子不就行了……

ngswfx

2个粉丝

55

问答

1

专栏

40

资料

ngswfx 2017-12-11 18:33:46
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=81926&ptid=38412]mengxp 发表于 2017-12-11 09:48[/url]
所以要掌握植球技术~~
如果不会植球,你可以再买一个板子不就行了……[/quote]

对,这也是个方法,不过通常接的这类单子,板子还比较值钱,因为量不大,或者是某些公司定制的,所以不敢乱来,这种板子本来良品率就不算高,在把片子折腾下来,再焊接回去,估计很难修复,关键时我不专业,呵呵,不过如果成本是200多的板子,这也是个不错的方法,最起码很快就可以知道结果,而且是想量哪个量哪个,呵呵:lol,我让那个公司找个工作不起来的或者不太正常的发来给我拆,这也是个不错的方法,毕竟这种特殊定制板子,他们肯定有不少贴片就贴出问题的

mengxp

0个粉丝

18

问答

0

专栏

1

资料

mengxp 2017-12-12 09:34:45
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=81968&ptid=38412]ngswfx 发表于 2017-12-11 18:33[/url]
对,这也是个方法,不过通常接的这类单子,板子还比较值钱,因为量不大,或者是某些公司定制的,所以不敢 ...[/quote]

对呀。。这种的,让他们发个空板过来,最好了……

colorjun

0个粉丝

40

问答

0

专栏

1

资料

colorjun 2017-12-13 18:02:28
认可0
可以让GPIO依次产生脉冲,用示波器看,应该可以吧
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区