搜索
bottom↓
回复: 16

2011,独立年,DSP伴我走过

[复制链接]

出0入0汤圆

发表于 2011-10-13 00:00:35 | 显示全部楼层 |阅读模式
2011年,是我人生的转折点。终于我告别了向父母要钱的日子,从经济上走向了独立。


先是忙着考研,总算顺利通过了初试、复试,拿到了录取通知。这是今年上半年的事了。

上半年还有一件不得不提的事,就是DSP。

接触DSP也就是从今年1月份开始的。考研前夕,学校有项目资金,买了块5509开发板。寒假正式开始研究。

用的HX-5509板子,TDS510仿真器,一共1100元买的

学习过程比较枯燥,无非就是IO口,时钟,中断,外设使用。但HX的视频教程比较丰富,我也从中学到很多知识,得到了一些乐趣,比如,通过DSP播放自己的声音,绘制各种波形、图像,做做FFT,FIR滤波实验等。

但我并不满足光盘里的例程。视频有时候也不够详细,只是泛泛而谈。于是我仔细阅读了TI官方文档,独立编写了一些实用程序,其中规模较大的是USB基础模块,并在学习DSP过程中充分利用了matlab这个工具,简化了开发,加速了学习进程。

其实基础的东西很关键,一遇到问题肯定都是这些方面:硬件配置,开发环境选项,调试环境建立。假期将这三个方面做了充分准备。

毕业设计是用5509完成便携式ECG系统设计,涉及到采集、存储、传输、回放、预警等功能。

有了假期的准备,开始真刀实枪上阵。

前端模拟采集模块已经在前一个项目里成熟,直接拿来用。

假期调试成功ADC,直接利用CCS就能看到采集的波形,很方便。

显示用的TFT屏是坛友Power G6提供的,分辨率240*400,调试顺利

有这三样东东,基本能显示ECG了,看着距离成功不远了,但其实还差很远

其次是数字滤波和心率计算,看了一位师兄提供的外文文献,将其算法实现,这需要用到假期准备的内容了。用matlab仿成功后,将滤波用C语言实现,在DSP上跑起来了。从开题到这里大约用了不到两周时间。

再然后就是存储。系统里有SD卡做大容量存储器,需要按FAT32文件系统来读写,之前没玩过SD卡,这时认真分析了一下文件系统格式,看了些代码,逐渐熟悉了怎么回事,然后确定了方案:将数据分段,按时间先后保存成单独文件,遇到很多问题。后来虽然解决了,但感觉健壮性仍不够。以后项目中采用FATFS。

再然后就是传输。USB调试花费了很长时间,问题也遇到很多,当时战线拉的太长,有时一天内先调试USB不成功,就继续调试SD卡,再然后调试系统菜单……全面进攻。后期重点进攻USB,实现了上位机显示、存储功能。

很快,大学时光就这样结束了,我拿到了毕业证,走向了社会。

研究生生活还没开始,自己决定先找个工作,锻炼自己,积累经验,体验生活。

于是到了京城

于是找了个小公司

于是开始了每天挤地铁

于是蜗居在一个偏僻的宿舍

于是拿着每月3000元的实习生待遇

于是继续搞DSP研究

暑假,酷热的京城,时不时迎来暴雨的洗礼

那段时间很不好过,晚上回宿舍等车有时半小时都等不到,遇到下雨更悲催,打车都没有,回到宿舍已经11点多……

京城的生活就是这样,没有人会“可怜”你,大家都很忙,自顾不暇


在此期间,学习了6455,并完成了几个项目中的部分工作,bootloader(基于Flash),高速总线接口(同Virtex5),NDK百兆网应用程序(上位机+下位机)等,也遇到不少问题,由于以前看过5509,学习时有了更明确的目标,针对应用深入学习了DSP的EMIFA,EDMA3,EMAC接口,并调试成功了这些模块。

终于能有同行称自己“赵工”

以后只要有机会,还会再搞DSP

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2011-10-13 00:15:32 | 显示全部楼层
恭喜!

出0入0汤圆

发表于 2011-10-13 00:27:22 | 显示全部楼层
好,,继续努力

出0入0汤圆

发表于 2011-10-13 08:15:27 | 显示全部楼层
很好,学习能力很强

出0入0汤圆

发表于 2011-10-13 08:24:41 | 显示全部楼层
很强。

出0入0汤圆

发表于 2011-10-15 17:28:26 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-10-30 16:26:07 | 显示全部楼层
向你学习

出0入0汤圆

发表于 2011-10-31 11:35:03 | 显示全部楼层
学习,向楼主学习,先从简单的学起

出0入0汤圆

发表于 2011-11-1 00:47:20 | 显示全部楼层
回复【楼主位】zhaoyongke 赵永科
-----------------------------------------------------------------------

恩 不错~~~共勉~~

出0入0汤圆

发表于 2011-11-2 09:03:40 | 显示全部楼层
请问楼主HX-5509板子怎么把程序下到外部FLASH
是否编写二次引导程序
能否提供简单例程参考?

出0入0汤圆

 楼主| 发表于 2011-11-3 16:35:03 | 显示全部楼层
回复【9楼】qwerttt
-----------------------------------------------------------------------

Flash烧写可以直接用开发板提供的例程。

HX的板子不能直接从Flash引导,除非修改CPLD内容(CPLD工程是原理图完成的,改起来需要费点功夫)。建议通过SPI EEPROM或I2C EEPROM进行引导,将用户代码从Flash搬移到内部DARAM,然后运行用户程序。之前应将用户程序编译完生成.bin文件,通过自己写的Flash烧写程序,烧入Flash中。

只是提供一个思路,现在板子送老师了,不能帮你搞定这个问题,不好意思!

出0入0汤圆

 楼主| 发表于 2011-11-3 16:45:39 | 显示全部楼层
回复【9楼】qwerttt
-----------------------------------------------------------------------

我暑假搞过6455上的bootloader in Flash,和你说的情况类似。

工程其实很简单,只贴主程序,涉及Flash烧写的程序可以参考HX提供的例程

//Flash烧写的工程main 函数
void main(void)
{
        unsigned char *pflash=(unsigned char *)0xb0000000;//指向Flash起始地址
        unsigned int i,n=0;
        unsigned int p;
        FILE *fp;//文件句柄,用于从PC磁盘读.bin文件
        fp=fopen("usercode.bin","rb");//打开文件,只读方式
        n=fread( temp_array,1,MAX_SIZE_OF_FILE,fp);//读取文件内容到数组temp_array,返回值n代表实际读取字节数
        if (n==0)
        {
                printf("error\n");
                while(1);
        }
        EraseFlash();//擦除整片Flash
        WriteData(0,n,temp_array);//将usercode.bin写入Flash
        printf("Burn OK\n");
         while(1);
}

//Bootloader 主函数
void (*pfun)(void);
void copy_flash_ram(void)
{
        unsigned int i,j,byte_count,ram_start_addr,rom_section_start_addr;
       
        pfun=(void (*)(void))(*((unsigned int *)PROG_IN_FLASH_ADDR));

        byte_count=(*((unsigned int *)PROG_IN_FLASH_ADDR+1));
        ram_start_addr=(*((unsigned int *)PROG_IN_FLASH_ADDR+2));
        rom_section_start_addr=PROG_IN_FLASH_ADDR+12;
        if(byte_count==0)
        {
                byte_count=0;
                return;
        }       
        while(1)
        {
                unsigned int temp=byte_count&0x03;
                for(i=0;i<byte_count;i++)
                {
                        for(j=0;j<3*1024;j++);
                        *((unsigned char *)ram_start_addr+i)=
                        *((unsigned char *)rom_section_start_addr+i);
                }
                if(temp)
                {
                        temp=4-temp;
                }
                rom_section_start_addr+=byte_count+temp;//必须对其到4的整数倍
                byte_count=(*((unsigned int *)rom_section_start_addr));
                rom_section_start_addr+=4;
                ram_start_addr=(*((unsigned int *)rom_section_start_addr));
                rom_section_start_addr+=4;
                if(byte_count==0)
                {
                        pfun();
                }
        }
}

出0入50汤圆

发表于 2011-11-3 17:37:19 | 显示全部楼层
记得跟你是校友,帮顶一个

出0入0汤圆

 楼主| 发表于 2011-11-4 21:40:09 | 显示全部楼层
回复【12楼】span42 狂奔的蜗牛
-----------------------------------------------------------------------

哈哈,多谢捧场!

出115入0汤圆

发表于 2011-11-5 00:09:55 | 显示全部楼层
求HX视频

出0入0汤圆

 楼主| 发表于 2011-11-6 12:44:51 | 显示全部楼层
回复【14楼】newkey
-----------------------------------------------------------------------

学校计流量,恕不能上传~~

从官网下可以看这个http://www.mcuhx.com/Files/News12.htm

出0入0汤圆

发表于 2011-11-7 15:42:07 | 显示全部楼层
学习了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-15 00:38

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表