整理的部分TI AM4379嵌入式项目笔记

关于dts:
1.片外挂载,设备树怎么写。外置ddr3等 父子节点的 #address-cells =<2> #size-cells决定rangs<1 0 0x1000000 0x10000>,代表设备片选1 ,偏移量0,起始地址0x1000000 ,地址大小 0x10000,对应映射地址范围0x1000000 ~0x100ffff 
2.中断号比 DATASHEET的号码小32 即 dts中断号+32 =DATASHEET中断号 
3.控制信号地址比DATASHEET中的 control module 地址小0x800 ,即dts地址+0x800 =DATASHEET地址。即说偏移量不大于800的,双方一致,不用减800。
4.gpio在dts中 配置芯片default(active)时上拉,sleep时下拉。 
5.am4372.dtsi的uart0 -->ti,hwmods="uart1" ,字符串描述编号全部加1 ,gpio亦是如此
6.中断向量在am4372.dtsi中全部设置完了,开发板引用即可,只需要在开发板dtsi设置引脚属性。
7.因为Linux键盘定义包含台式机键盘,笔记本键盘等,不管是矩阵键盘还是按钮,都要注意按键配置

关于指令:
1.df 存贮器清单
2.lsinput 键盘清单 ,hexdump /dev/...键盘事件在控制台显示。
3.使用cat /proc/tty/driver/serial查看板载串口 

关于sqlite3:
1.各个表格,开头第一列 xxname text primary key not null 其中xxname不能重名
2.C#中,Table[0]rows.count从0开始,两行则rows.count=1

关于串口:
串口这部分是修改离职同事的未完成程序中发现并解决的问题汇总
1.read直接返回,没有进入阻塞模式 。原因:newtio.c_cc[VTIME]和newtio.c_cc[VMIN]没有设置, 或者是都设置为0。解决办法:修改为newtio.c_cc[VTIME]=10,newtio.c_cc[VMIN]=0; 1秒内没接收到则超时。
2.阻塞模式下一直读取为0,返回数字随着延时而增加.原因:返回数字没有赋初始值,因为多串口select下,返回数字的赋值函数没有被执行。解决办法:这说明gcc不会给不赋值的变量默认赋值为固定0值,而是随着函数执行时间而增加。这个特性可以用来做计时器。返回赋初始值即可。
2.1.赋初始值之后解决了返回的问题,但是当 select延时参数为NULL时,select函数一直被阻塞。
3.没有接收的情况下,select函数返回maxfd被选中,即自动选择句柄最大的。解决方案:分析发现最大句柄接485芯片,由于485芯片接线方式的问题,导致开始发送一个字节(忙),自动会接收到这个字节。然后程序里检测到接收字节后,不能识别指令,又发送该字节代表忙,形成死循环,所以导致不停检测到数据.数据发送完毕之后,延时1ms再cflush(fd,TCIOFLUSH)可以清除,时间必须够,999us都不行。
4.发送一切正常,而接收的第八位被强制为0.原因:去掉newtio.c_iflag|=ISTRIP ,该语句不是自动去掉校验位,而去掉了第8位. 
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值