上一节,介绍了eCos STM32 SD/MMC Card driver前面2个步骤的调试情况,SD卡可以mount成功并能成功打开目录和读取SD卡目录文件列表信息。但是在SD卡中创建新目录和文件时则会失败,严重的是还破坏了SD卡中文件系统数据,导致SD卡目录和文件数据的丢失。

这是怎么一回事呢?本节除了解决这个问题外,还修复了eCos Disk IO层和eCos FAT文件系统中存在的bug,以及更新了读取SD卡存储信息的相关代码。

阅读全文 »

 


上一节,完成了eCos STM32 SD driver代码的编写,展现了如何借鉴第三方驱动快速部署驱动代码的实例。与时同时,再次看到了eCos DMA的运用。

本节主要介绍eCos STM32 SD卡驱动的调试,再次完整地呈现了eCos驱动的调试过程。如果说编写代码大多数是复制粘贴,那么通过调试,则让我了解了SD卡存储结构、FAT文件系统知识及其数据分析,最重要的是了解了eCos的FAT和Block library(块缓存)程序。

阅读全文 »

 


前前后后经过了一个多月时间,终于在eCos中实现了STM32的SD卡驱动。相比而言,SD卡驱动不仅代码量大,还涉及eCos块驱动(disk驱动)体系、SD/MMC存储卡、FAT文件系统、块缓存、文件操作等多方面的知识点。

从本节开始,以eCos STM32 SD卡驱动为切入点,一起来了解eCos块设备驱动、文件系统、文件操作等知识点。本节主要介绍eCos disk设备驱动体系结构。

阅读全文 »

 


整个eCos音频驱动所花费的精力大部分集中于stm32 i2s驱动实现及其调试上。在整个调试过程中,最烦人的就是播放出来的声音有噪声,有噼噼啪啪的杂音。即使是目前提供下载的音频驱动,也还有这些问题,当然,用还是能用的,至少播放驱动包里面所带的wav音频文件是正常的!

本节主要介绍eCos STM32 I2S驱动的实现,侧重点是DMA的使用和DMA中断双缓存机制的实现。 阅读全文 »

 


上一节,介绍了eCos音频驱动的设计框架以及简单介绍了其实现方式。由于音频驱动分为两部分:STM32 I2S驱动和WM8978驱动,为介绍方便,把这两部分分开来介绍,而且描述的侧重点是不一样的。

本节重点介绍WM8978驱动的实现,侧重点介绍如何在eCos中添加一个新的驱动组件和驱动依赖模式的实现。 阅读全文 »

 


于我而言,音频驱动是一个较为复杂的驱动子系统。前几年曾在嵌入式linux中开发过CS4344音频驱动,这款音频芯片跟AT73C213非常相似,所以驱动是“山寨”AT73C213驱动的,驱动开发异常顺利,几乎没有遇到什么问题。仅管如此,单理解这个驱动就费了不少劲,特别是理解linux中ALSA驱动子系统。

此外,音频驱动子系统中,还有很多概念需要理解,如PCM、音频采样频率、声道数目及其采样比特数等。

eCos中没有I2S驱动,也没有像USB、framebuf一样,提供一个音频IO子系统,但不代表我们无所作为。通过本次实现的eCos STM32 I2S驱动,可以了解到以下3个方面知识: 阅读全文 »

 


上节,讲述了如何移植SPI FLASH驱动,从中可以看出,移植SPI FLASH是相对比较容易的。移植容易并不等于没有任何问题,相反,还遇到了棘手问题,本节讲述如何解决这个棘手的问题。

说到技术问题,说点题外话。在我创建的eCos技术群(群号:144940146,欢迎加入)上,有些人一遇到问题就马上寻求帮助,并且很强烈地希望你给他分析给他解决。我想说的是,搞技术,肯定会遇到这样那样的问题,但遇到问题时,自己先要思考和分析,并尝试进行问题定位,然后寻求帮助。别人帮你分析并提供相应问题分析方法和建议时,自己也要积极思考并反馈实验现象,这样才能有利于问题的解决。所以说,寻求帮助实际上也是一门很大的学问。

只要掌握了方法,任何问题不是不可以解决,方法无非就是:根据问题现象进行分析,然后定位,最后解决问题。

回归正题,希望大家阅读的时候,不是看解决了什么问题,而是看怎么分析问题、怎么解决问题的。

阅读全文 »

 


本节主要介绍串行SPI flash驱动的移植。eCos中,flash支持比较完善,移植flash驱动也不是件难事。虽说如此,在本次移植spi接口flash时,还是遇到了一些意外问题,而且正是由于这个意外问题,让我解决了在移植STM32 ADC驱动时遇到的一个棘手问题:

只要我在eCos图形配置工具中打开了ADC的任何一个通道,则不能生成正常的bin格式映像文件(生成的bin文件超大,大小达到了不可思议的1.2GB大小,但可生成正常的srec格式映像文件);如果不打开ADC任何一个通道,则可以输出正常的bin格式文件。虽然这个问题后面用暴力解决了,但问题原因没有搞清楚,所以一直悬在心里。

阅读全文 »

 


I2C总线,只有2根信号线,结构简单,易于实现,因此在嵌入式中应用非常广泛。在eCos中,I2C的设计框架与SPI类似,都是由IO层和Device Driver层组成。与linux I2C框架相比,eCos I2C框架设计简洁实用。

STM32提供了2个I2C接口,由于STM32芯片本身存在的缺陷,eCos STM3210E-EVAL模板并没有提供I2C的驱动组件包。但可在eCos官方bug网站上找到相应的补丁包。

遗憾的是,这个补丁包在我的板子上还是不能使用(下面会介绍原因)。所以,后面采用GPIO软件模拟I2C来实现。经初步测试,本人编写的eCos I2C driver初步成功。

阅读全文 »

 


本节说明如何把DM9000移植到eCos中。DM9000在redboot中工作方式为poll,但在eCos中则是使用中断工作方式,所以移植和调试的重点就是GPIO中断。

之前没有了解过STM32的GPIO中断,也不清楚在eCos中如何安装和使用GPIO中断,甚至在开始调试DM9000驱动的时候不知道要了解这块知识,所以整个调试过程都是在慢慢的摸索中掌握的。

所以本节与其说是移植DM9000驱动,还不如说是如何在eCos中安装和使用stm32的GPIO中断。需要注意的是,这里不会太详细介绍stm32 GPIO外部中断的知识,因为stm32的参考手册有详细的介绍。

阅读全文 »

© 2012 velep.com | reille blog | 管理| 粤ICP备15065318号-2| 谷歌地图| 百度地图| Suffusion theme|Sayontan Sinha

无觅相关文章插件,快速提升流量