久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4993|回復: 4
打印 上一主題 下一主題
收起左側

DSP學習的三個階段

[復制鏈接]
跳轉到指定樓層
樓主
ID:115191 發表于 2016-4-19 13:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
研究生期間斷斷續續做過TI  DSP研究,從一個對嵌入式一點也沒有了解的新手到快畢業時完成一個自認為滿意的項目,其中走過很多彎路,現在把我對DSP學習的心得和一些參考文獻列出來,可能對初學者具有幫助。
   實驗室用的是一款聞亭的DM642開發板,當時這款開發板還比較新,國內中文資料很少,而且聞亭但是的例子程序均是采用TI的原程序,不像合眾達的例子程序容易上手,所以可能合眾達的板子比較適合初學者使用。
  DM642是一款針對圖像應用的高端DSP,近幾年來國內應用的范圍很廣。對于DSP軟件學習而言個人認為包含了3個方面的東西:1:芯片的外設,對芯片的基本操作和簡單程序運行環境。2:嵌入失操作系統原理(DSP/BIOS)。3:DSP算法的移植和優化工作。下面分別對這三個方面做論述。
   1:芯片的外設,對芯片的基本操作和簡單程序運行。
   學習DSP 首先是要對芯片和你所用到的芯片外設的數據手冊說明比較清楚,對于初學者可能在剛開始看datasheet時感覺很頭暈,因為datasheet只是一些說明性的東西,他沒有教你怎么去用,所以datasheet部分一定要結合相應的例子程序去看。對于芯片的外設操作TI提供了一個CSL的函數,幫你事先定義好了一些寄存器地址,這樣就不用你去查找每個寄存器的詳細地址。
   現在的C6000 程序開發大部分采用C語言,極少數的關鍵代碼采用線性匯編或者匯編語言。對于一個C語言運行工程需要的最少元素是:1:main函數 2:cmd文件3:runtime supportlib。這是讓一個基于C語言的工程跑起來的最少條件。換句話說只要有了這三個東西我們就可以在DSP上做任何想做的事,但是考慮到做大型工程和復雜應用的需要,通常又要用到操作系統DSP/BIOS和驅動。
  在階段首先是讓一個最簡單的hell world工程跑起來,這個工程這包含三個文件,一個main.c 一個CMD文件,一個 rts.lib。然后在查數據手冊DSP的外設資源調試一遍,這個過程完成后幾基本上手了:)。
  在這個過程中需要搞明白的是一個過程,三個文件,和簡單的調試方法。一個過程是C語言怎么生成.out可執行文件的過程,通常包含編譯,匯編,連接三個過程。幾個文件是obj, cmd, map,文件Obj,Cmd和Map文件的格式在TI的CCS 文擋幫助中都有詳細論述。調試方面我們可可以利用防真器可以讓程序在任何地方停下來,然后利用CCS的Memory View功能可以查看想要知道的CPU地址映射的區域。
這部分的參考資料可以查看
(1)電子科技大學 出版的 C/C++語言硬件程序設計--基于TMS320C5000系列DSP
(2)幫助文檔

   2:嵌入失操作系統原理(DSP/BIOS)
   這部分就有嵌入式操作系統知識了,DSP/BIOS是不開源的,如果想對操作系統的知識了解深入的話可以看看uc/os-II的原代碼。嵌入式操作系統的基本原理都一樣。這個完成后在把Ti關于DSP/BISO的列子程序跑一便熟悉操作系統中各個模塊,如TSK, TIMER…..。
   在熟悉完操作系統后,剩下的就是對DSP/BISO的驅動模型了,TI 的驅動模型采用的是class-mini driver模式,其中class driver就是一些函數接口,提供到mini driver的訪問。其中mini driver實現方式根據不同的板子和芯片會不一樣,建議選取一個外設資源,看懂其源代碼,這些代碼一般都在幾個c 文件內,其中最主要是5-7個函數的實現;
  mdBindDev()
  mdUnBindDev()
  mdControlChan();
………………….
DSP/BIOS的驅動比較簡單,總得來說驅動可以分為2個部分,一部分函數硬件的初始化和控制工作,這部分相對交簡單;另外一部分函數負責 I/O,buffer的同步工作,這部分通常要復雜的多,而且這部分函數常常和中斷牽涉在一起,所以在看驅動源代碼時一定要時刻知道中斷什么時候發生,中斷服務函數里面做了些什么,對其他函數的影響是什么等。如果能把驅動代碼看一遍對于C語言提高是很大的。
這部分的參考資料可以查看
  (1)      DSP/BIOS userguide
  (2)  How to write DSP device driver
(3)  嵌入式實時操作系統UC/OS-IIhttp://m.zg4o1577.cn/bbs/dpj-48666-1.html

    3:DSP算法的移植和優化工作
     這部分是最后工作,一般也是比較耗時間的工作。現在如果實現比較復雜的系統不做DSP程序的優化是肯定不行的。DSP程序的優化方法有很多,網上也有很多資料,但是以我實際的經驗來看很多人都沒有把握關鍵的地方,如果是復雜算法的話DSP優化的第一步應該是存儲器優化,也就是說利用ping-pong buffer技術將待處理的數據分批的搬運到片內存儲器中,在這個工程中要結合片內資源,設計好數據結構,并一定要考慮讓數據對齊。存儲器優化是 program optimization 文檔中沒有提及,而是在一個叫Cache user guide 文檔中說明,所以這樣就造成很多人不知道原因。在完成存儲器優化之后就是program optimization 文檔中所講的方法,-o3,數據打包,inline,循環展開,匯編等等。
     做優化的過程中一定要保證優化之前和之后的處理結果正確性,也就是說優化不能導致錯誤的發生,然后在盡量提高時間。
     關于優化后函數運行時間的測量TI的有個文檔里面有教你怎么測,就是利用定時器來測量函數運行的時間,另外對于運行時間本來就只有幾百個cycle的短小匯編函數也可以利用CCS 的clock功能來測時間。
總之程序優化就是一項耗時間的體力活,哈哈!
這部分的參考資料可以查看
(1)      program optimizationguide
(2)      cache user guide
http://blog.sina.com.cn/s/blog_4d32d0b401009ntg.html

評分

參與人數 3黑幣 +57 收起 理由
Hyman41 + 5 共享資料的黑幣獎勵!
jzjcs + 2
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:185650 發表于 2017-4-2 19:47 | 只看該作者
感謝樓主分享!
回復

使用道具 舉報

板凳
ID:109651 發表于 2017-5-11 16:19 | 只看該作者
感謝樓主的分享精神!!!
回復

使用道具 舉報

地板
ID:189987 發表于 2017-5-12 15:07 | 只看該作者
可以看看 正在學習
回復

使用道具 舉報

5#
ID:189987 發表于 2017-5-12 15:07 | 只看該作者
正在學習 感謝分享
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品一二区 | 午夜影院在线观看视频 | 久久精品国产亚洲 | 97伦理电影网 | 欧美a级成人淫片免费看 | 狠狠av| 色婷婷综合久久久中字幕精品久久 | 国产免费a视频 | 尹人av | 日日操视频 | 亚洲福利一区二区 | 精品九九九 | 日韩精品久久久久久 | a久久| 国产黄色在线观看 | 国产精品九九视频 | 91精品在线播放 | 精品视频一区二区三区 | 日韩电影免费在线观看中文字幕 | 国产精品久久久久免费 | 中文字幕一区二区三区日韩精品 | 一区二区三区四区国产 | www.婷婷亚洲基地 | 欧美mv日韩mv国产网站91进入 | 国产内谢| 天天射天天操天天干 | 久久久久国产 | 国产精品久久久久久久久大全 | 国产乱码精品1区2区3区 | 女同久久| 久久精品久久久久久 | 午夜精品一区 | 91久久综合亚洲鲁鲁五月天 | 国产99精品| 久草视频网站 | 99热国产在线播放 | 成人在线小视频 | 黄色成人在线观看 | 中文av网站 | 成人深夜福利在线观看 | 天堂视频中文在线 |