在自己的产品测试中 子机正常模式下运行毫无问题 都正常
但是远程主机端 一直发送数据 ,就会导致产品lcd花屏 串口死机
而且显示lcd花屏 串口后面才死机的的 两者死机间隔时间有长有短 不必深究,通过其他没有接在总线上的子机对比来看 是串口惹的货。
lcd花屏 肯定是全局变量自己变化了的 是内存泄露或者覆盖问题
串口接收死机 并非子机死机 ,而是串口接收不到数据了。
实验中 接收不到数据的现象可以分为下面原因
1 这里的接收不到数据我们不能单一的理解为串口中断死掉了 这是不可能的(通常情况下)
2 我们接收中断被发射中断阻挡了即 发送中断 一直在发数据(之前是死循环等待发送完成 而呈现中有看门狗 所以这种情况也很小 不过现在我还是加上超时处理了)
3 接收中断中接收的 管道形式的buf 一直接收超出了管道值 那么管道没有清空的同时 管道没有继续接收了 算是溢出了吧 同时造成了内存泄露(非常有可能)
当前修改了修改了接收中断中数据进行初步过滤来处理每时每刻总线上的无用数据。
当前修改了这个的方面测函数 程序正在测试中 耐心等待吧
测试了 发现lcd不花屏了 但是某一时刻 还是出现了 “ 串口死掉 ”的现象
然后我在程序中 估计仍然是接收问题 程序设计中管道接收满了 就不接收了 。即当子机数据只进不出的现象出现时 一段时间后管道就装满了 这之后 就造成了接收的数据丢掉了。当前的措施是管道移动 就是丢掉头上的数据 尾巴上放入新的数据 这样就的现象就是老的数据 你不来取 我就扔掉了。后面的新的数据 依次接入 当前思路是这样的 不知道行不行 待测试中
关键字:I2S 音频总线 S3C2440 I2S控制器
引用地址:
I2S音频总线学习(三)S3C2440的I2S控制器
推荐阅读最新更新时间:2024-11-18 11:14
S3C2440—10.代码重定位
本文主要介绍ARM裸机代码重定位的相关知识,以及重定位的实现过程。 下面将由ARM裸机(S3C2440)的启动方式开始分析,引入段的概念,随后介绍链接脚本的使用以及代码重定位的操作,首先会使用汇编语言验证代码重定位的可行性,最后将使用C语言实现代码重定位。 一.启动方式 S3C2440的启动方式有俩种: NOR FLASH启动 NAND FLASH启动 说起ARM裸机的启动方式,就是将程序的bin文件烧写在ARM的存储空间中,ARM从这些地址中读取指令到CPU中执行,需要数据的时候去数据的存储地址取数据。说白了启动方式的不同就是bin文件烧写地址的不同,可以烧在NOR FLASH中,也可以烧在NAND FLASH中,俩种F
[单片机]
基于OHCI协议的S3C2440 USB Host Driver之协议介绍(四)
HCCA HCCA是256字节的内存结构,系统软件用来与HC发送或接受特殊控制和状态信息。256字节对齐。HC寄存器中的HcHCCA指向HCCA。 HccaInterruptTable为32个周期表的头指针数组。每帧HC仅访问该表一次。当前帧号的低5位用来索引。 HccaFramNumber HC每帧会更新该16位的值。在新帧,HC发SOF后,HC读一个ED开始处理之前,该值写为HcFmNumber的StartingFrame域。在SOF和更新该值之间,HC不在USB上传输任何数据。 HccaDoneHead周期性地,HC将HcDoneHead的值写到HccaDoneHead中,那么主机软件就可以处理完成的TD了。
[单片机]
s3c2440裸机-电阻触摸屏-6-触摸屏校准实现-五点校准法
前面我们讲过触摸屏触摸屏校准原理就是让lcd能够与触摸屏坐标对应起来。 一、五点法校准实现 一、我们取A,B,C,D,E这五个点,那么这个时候我们需要把该5个点的触摸屏和LCD的坐标对应起来,这就是校准的过程。 ①在LCD显示屏上A点显示一个“十字”形状 ②用户在触摸屏上点击对应A点的“十字”形状 ③记录触摸屏的数据坐标 同理在B,C, D, E点循环该①②③过程,就能得到这五点触摸屏坐标。 二 、然后根据这5个触摸屏坐标数据确定公式。 三 、以后得到TS触点坐标,即可校准出期待的TS坐标。 下面开始函数实现: 在LCD上显示 十字 形状,定义为函数fb_disp_cross() 记录触摸屏坐标,定义函数为ts_read
[单片机]
裸机系列——IIS_DMA
s3c2440的IIS总线已经弄了好久,今天大概可以做个总结了吧,最近几天调试IIS弄了人有点疲惫,遇到了很多的问题,但是正是这些问题让我在成长。过多的情绪就不在表现了。进入今天的主题,IIS——DMA总结。 问题1、DMA物理地址 前面我调试DMA的时候也是调了好几天的DMA的UART通信一直得不到结果,后面上网搜了一些大概的信息,DMA需要传输时需要设置连续的物理地址,同时关于虚拟地址,物理地址,总线地址这些不明白,所以我就把#define buffer ((volatile unsigned short *)0x55000010)这种绝对地址当做唯一的物理地址。后面因为直接给个我认为的物理地址后程序不好弄就没调试了。
[单片机]
s3c2440裸机-异常中断(四. irq之外部中断)
中断前: 中断产生后: 问题案例: 我们想实现一个按键点灯程序,我们知道有以下两种方案: 1.轮询方案:轮询检测按键的电平状态,当检测到被按下后,对应的gpio会拉低,点亮对应的led;(略) 2.中断方案:将按键配置成外部中断源,当有按键按下,触发中断,在中断服务程序(isr)中去完成点灯。 下面开始写代码: 一.中断初始化 1)中断源设置 我们用按键作为外部中断源,我们把按键对应的gpio配置成中断引脚,当按键按下,相应的gpio产生了电平跳变,就会触发外部中断。 我们想达到按下按键灯亮,松开按键灯灭这种效果(配成双边沿触发,按下的时候产生下降沿中断,进行点亮,松开产生上升沿中断,进行熄灭)。当然也可做成按一下
[单片机]
S3C2440 按键中断方式汇编代码
SRCPND EQU 0X4A000000 INTMSK EQU 0X4A000008 INTPND EQU 0X4A000010 EINTMASK EQU 0X560000A4 EINTPEND EQU 0X560000A8 EXTINT1 EQU 0X5600008C EXTINT2 EQU 0X56000090 INTMOD EQU 0X4A000004 AREA INT_KEY,CODE,READONLY ENTRY CODE32 ResetEntry b Reset ; //0x04: 未定义指令中止模式的向量地址 HandleUndef b HandleUndef ; //0x08: 管理模式的向量地址,通过
[单片机]
S3C2440之简易播放器设计(利用DMA与IIS通信)
利用前一篇文章讲解的IIS知识,只是不是利用轮询,而是利用DMA控制器,让数据在内存和IIS的发送FIFO之间传送。这样在音乐播放过程中,进行暂停,静音,播放,音量增减都不会使音乐产生卡顿的感觉。 注意DMA的请求是由发送FIFO自动发起的。 可以设置DMAMSKTRIG的STOP位停止DMA,但是真正的停止需要参考ON_OFF位。ON_OFF位当为非自动重载,且CURR_TC为0,该位自动为OFF。STOP位置位,该位也置为OFF。所以需要注意,一次DMA传输结束,假设开启了DMA中断,那么再DMA中断需要再次打开DMA,因为CURR_TC=0使其停止了。 当CURR_TC=0,且DMA ACK=1的话,TC的数值又
[单片机]
S3C2440的camera接口特性及WinCE 下的驱动
S3C2440是应用十分广泛且适用于嵌入式系统的一款嵌入式处理器。winCE 5.0/6.O是微软公司开发的一款专用于嵌入式系统的实时操作系统。其模块化设计使开发人员可以根据需求定制设备。目前,国内大部分OEM商都提供了对S3C2440的camera接口在WinCE5.O/6.0下的驱动支持。遗憾的是,目前国内OEM商提供的驱动仅限于对几款微型摄像头(如ov9650等)的驱动支持。当用户采用CCD摄像头作为图像采集的前端设备时,原来的驱动已经不能使用了,而CCD摄像头因其优越的性能,在监控领域扮演着主力军角色。本文从分析S3C2440的camera接口特性出发,详细介绍当摄像设备为CCD摄像头时,在WinCE 5.O/6.0操
[单片机]