999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種TI的C66X的快速啟動方法

2016-06-18 01:21:20潘慕晗劉云武漢數字工程研究所第二研究室430074
電子制作 2016年6期
關鍵詞:指令界面功能

潘慕晗 劉云 武漢數字工程研究所第二研究室 430074

?

一種TI的C66X的快速啟動方法

潘慕晗劉云武漢數字工程研究所第二研究室430074

【文章摘要】

隨著DSP應用技術的發展,其架構和規模不斷擴大,DSP系統的啟動方式也逐步向多元化和自動化發展。本文介紹C66X啟動的過程并分析NOR FLASH啟動的原理。通過對二級引導中的交互程序進行研究,實現了DSP的快速啟動以及具有較好交互性的操作界面。

【關鍵詞】

C66X;NOR FLASH啟動;bootloader;交互

【Abstarct】

As DSP develops to the 21st century, its architecture and scale has changed a lot. Boot Method is also progressing towards the development of diversified automation point of view. Introduce the process of C66X-boot, Analyze the advantage of NOR-FLASH-Boot. Design the user interface program in the 2ndbootloader.Readlize the flexible quick-boot, and a better interface environment.

【Keyword】

C66X; NOR-FLASH-Boot; bootloader; interactive

0 引言

自2010年TI公司推出keystone C66X系列的DSP之后,關于該系列DSP的啟動方式也成為技術難點之一。C66X系列DSP板提供了多種方式啟動:本地的或者遠程的,基于ROM的或基于flash的。總結一下,共有以下7種:EMIF16啟動、SRIO啟動、以太網啟動、PCI-e啟動、I2C啟動、SPI啟動以及Hyper-Link啟動。

對于本地啟動,一般使用I2C模式啟動,由于啟動的代碼存放在EEPROM上,讀取速度慢,導致啟動速度較慢,耗時2-3秒。同時I2C啟動的代碼大小也受到EEPROM的容量限制。相較之下,使用EMIF16模式啟動,把啟動代碼放在NOR FLASH上,不僅啟動速度快,而且可以增加代碼的容量以及靈活性。本文主要介紹了C66X系列DSP基于NOR FLASH的加載原理,并設計了一種可以通過串口進行交互的二級引導程序。

1 NOR FLASH啟動原理

因為NOR FLASH是按字節尋址的,所以可以在NOR FLASH上直接執行代碼。因此我們將一段引導代碼燒入到NOR FLASH的基地址,選擇EMIF模式啟動DSP時,該段代碼會將其后的初始化代碼搬移到指定位置。然后跳轉到C語言環境初始化程序入口地址“_c_ int00”。將這段代碼稱為一級bootloader。這段代碼的執行時間,會隨著其后代碼的大小變化,在400微秒左右。

初始化代碼稱為二級bootloader,依據環境參數對PLL、DDR、UART、網絡等進行初始化。初始化過程約10ms(初始化成功)。二級bootloader支持對用戶程序的多種方式的引導,可以進行單核引導、多核引導、網絡加載引導、以及直接跳轉。

圖1 .bin文件格式

總結來說,一級bootloader負責將代碼引導起來,二級bootloader負責將系統初始化。

2 一級bootloader的分析

一級bootloader是直接運行在NOR FLASH上的。即PC指針指向NOR FLASH的基地址時,一級bootloader就開始工作了。

一級bootloader的工作是解析并引導其后的二級bootloader,所以二級bootloader 在NOR FLASH上的存儲格式就有一定的要求。該種文件一共分3部分,代碼入口地址、代碼段信息、結束標識。代碼入口地址,即圖1的“_c_int00”,即文件頭部的4個字節。代碼段信息包含段的大小、段的起始地址、段的內容。根據段的大小以及起始地址,我們可以將其后的段內容搬移到指定的位置,也就是實現引導過程。結束標志是在文件的尾部值為0的4字節整型。當一級bootloader識別到段大小為0時,就認為搬移工作已經結束,然后跳轉到代碼入口地址“_c_int00”。圖1即為二級bootloader的存儲格式。總的來說,一級bootloader工作就是把所有的段內容搬移到指定的地址空間,然后再跳轉到“_c_ int00”。

因為二級bootloader的格式是固定的,所有生成一個該格式的文件是相當重要的一個步驟。使用CCS5.5編譯生成的執行文件(后綴.out)是ELF格式的。我們需要通過一定的工具鏈將ELF文件轉換為圖1所示的文件格式。工具鏈如圖2所示。首先,向hex6x.exe輸入.out文件以及一個.rmd的配置文件;得到一個.hex的中間文件,再將其輸入到b2ccs.exe,得到一個.dat的中間文件,再將其輸入到ccs2bin.exe,得到我們需要的.bin文件。

《會稽志》王右軍宅記:“舊經云:‘羲之別業有養鵝池、洗硯池、題扇橋存焉。’……既謂之別業,則疑宅不在是,或云嵊縣金庭觀,乃右軍舊宅,嘗舍讀書樓為觀,在縣東南七十二里孝嘉鄉。”[2]1951

圖2 .bin文件工具鏈

3 二級bootloader的研究與實現

二級bootloader的首要工作是完成整個系統的初始化,包含PLL串口、I2C以及DDR等。初始化的參數是從環境變量中獲取的,如果環境變量不存在,則使用默認參數。在完成系統的初始化后,會提示用戶是否進入交互界面,不進入交互界面則繼續啟動用戶程序。下面主要介紹交互程序的設計。

用戶交互界面是通過串口構建的。啟動后,系統打印一些DSP的參數,如DDR大小、主頻、初始化信息等,再進入自動啟動,等待數秒后按照設定的啟動模式引導用戶程序(在等待過程中,按下任意鍵可進入交互界面)。

交互功能主要由以下幾個方面組成:

串口輸入輸出功能,輸出使用與printf類似的sys_printf,實現變參打印。而輸入則使用sys_read_line,每次讀取一整行的輸入,同時實現退格、插入刪除、查找最近的輸入等功能。主要是實現上下左右、退格以及ESC鍵的功能。

為實現查找最新輸入的功能,需要一個環形儲存池,用于保存前面使用過的指令。環形池使用鏈表實現,用于實現上下鍵查找最近的輸入。環形池內單個節點,包含的信息有輸入的信息cmd_t[]、輸入信息長度size_t、使用標記used、上一個節點的地址、下一個節點的地址。

指令解析及指令庫。如查看內存數據“dm 80000000 100”,首先在指令庫內查找與dm對應的指令,然后進入“dm”的處理函數(查看某地址的數據),讀取輸入中的參數,地址參數0x80000000,大小參數0x10,然后進行輸出0x80000000開始的0x10字節的數據,并打印每個字節對應的ASCII碼,不能顯示的字符以‘.’代替。

指令庫是由一張指令名表及指令函數組成,指令名表的每個條目由3個項組成。指令名:用于指令解析時,查找相應條目,如“dm”;指令入口:查找到指令條目后,根據條目內的該項可以調用相應的指令函數;指令說明:用于打印指令表的幫助信息。

打印幫助信息:{"help", &cmd_help, "show the help table"}

添加指令,需要在指令名表里,加入相應條目,同時實現相應的指令函數即可。

功能函數封裝,將底層驅動與功能函數隔離。使代碼對于不同硬件平臺具有較好適應性以及可移植性。

如對于不同的FLASH,只需要在FLASH表內添加相應的條目以及相應的底層驅動即可。

static FLASHTable f_table[2]=

{{0, &S29GL_write, &S29GL_erase, "S29GL"},

{-1, NULL, NULL, ""}};

腳本功能,在啟動用戶程序之前,執行一些特定的動作,以此達到不修改代碼,而增加功能。腳本會被保存在環境變量中,每次啟動都會根據環境變量中的設置來決定是否執行腳本,以及腳本中的內容。

環境變量,是二級bootloader中的重要組成部分。它控制了系統的整體初始化,功能的選擇,用戶程序的啟動方式等。對于不同應用環境下,啟動時的參數也是不同的。如對于不同的DDR3,我們需要在環境變量中設置不同的DDR初始化參數。

環境變量是可以在交互界面下修改的,修改后通過指令保存到設定的NOR FLASH的某片區域上。為了保證環境變量的可靠性,在環境變量的尾部加入一個CRC32的校驗。每次讀取環境變量時,把讀取的環境變量計算CRC32的值與NOR FLASH上的校驗值對比,以確認讀取到的環境變量是有效的。

計時功能,是啟動流程控制的一個重要組成部分,主要用于超時等待和刷新打印。使得bootloader的啟動時間在一個可控的范圍內。在主頻比較高的DSP上,選擇以1微秒為計數單位。超時等待的功能一般用在硬件初始化等待。刷新打印則是用在自啟動中,提示用戶剩余時間。

通過實現以上的幾點,我們可以搭建一個簡單的交互界面。當系統啟動后,打印當前的版本為1.5.0以及系統相關參數。然后讀取環境變量的內容(如果NOR FLASH上沒有環境變量則用默認參數),再根據環境變量對系統初始化并提示用戶是否進入交互界面。進入交互界面后,用戶可以輸入相應的指令來執行一些操作。如“?”,查看幫助信息;“dm 80000000 10”,查看內存信息;“ddr test”,測試內存單元;“flash”,固化用戶程序等。圖3展示了一次DSP啟動,并進入交互界面的全部打印。

圖3 DSP啟動打印信息

4 結論

本文通過分析TI的C66X DSP的NOR FLASH的啟動原理,研究設計了用戶交互程序,實現DSP的快速啟動以及多樣的啟動方式,使得用戶可以通過可視化的界面來進行程序的固化以及引導。

【參考文獻】

[1] 樂燕芬. ARM嵌入式系統啟動過程分析及實現[J].儀器儀表學報,2006年S3期

[2]肖啟陽 方元 張忠慧. 基于TMS320VC55X系列DSP的外部FLASH并行二次引導加載方法研究[J].計算機應用與軟件,2013年04期

[3] 馮林琳 耿恒山. 基于S3C6410的Uboot分析與移植[J].計算機與現代化,2013 年10期

[4] 李飛平 卿粼波 滕奇志 舒君 何小海. 基于TMS320C6678的多核程序加載研究與實現[J]. 電子技術應用,2015年03期

[5] 衛晉 劉峰 龍騰. 大規模多DSP實時網絡加載系統關鍵技術研究[J]. 計算機工程與應用,2007年05期

猜你喜歡
指令界面功能
聽我指令:大催眠術
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
關于非首都功能疏解的幾點思考
人機交互界面發展趨勢研究
手機界面中圖形符號的發展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
中西醫結合治療甲狀腺功能亢進癥31例
主站蜘蛛池模板: 欧美在线一二区| 免费国产高清视频| 综合色天天| 国产h视频免费观看| 超碰91免费人妻| 日韩无码黄色| 在线精品自拍| 国产精品免费电影| 欧美综合区自拍亚洲综合天堂| 女人18毛片一级毛片在线 | 欧美激情一区二区三区成人| 伊人久久综在合线亚洲2019| 亚洲男人天堂2020| 国产免费久久精品99re丫丫一| 久久亚洲国产视频| 亚洲天天更新| 欧美一级在线| 亚洲人在线| 日本成人精品视频| 香蕉网久久| 国产成人亚洲毛片| 中文字幕在线欧美| 夜夜高潮夜夜爽国产伦精品| 国产精品第一区| 婷婷六月综合| 青青草原国产免费av观看| 亚洲国产成人在线| 片在线无码观看| 久久这里只有精品66| 91免费国产在线观看尤物| www.亚洲天堂| 亚洲色图综合在线| 不卡午夜视频| 五月天丁香婷婷综合久久| 国产成人精品高清不卡在线| 久久成人18免费| 国产精品成人一区二区不卡| 亚洲天堂2014| 国产三区二区| 亚洲日韩图片专区第1页| 亚洲天堂.com| 国产交换配偶在线视频| 中文字幕在线一区二区在线| 午夜视频免费一区二区在线看| 中国黄色一级视频| 色综合网址| 日韩免费中文字幕| 五月天久久综合| 精品国产成人a在线观看| 国产午夜无码专区喷水| 中文字幕首页系列人妻| 欧美日韩国产成人高清视频| 欧美人人干| 亚洲第一黄片大全| aaa国产一级毛片| 国产在线无码一区二区三区| 青草视频在线观看国产| 精品人妻一区二区三区蜜桃AⅤ| 香蕉eeww99国产在线观看| 亚洲日本www| 亚洲无码精彩视频在线观看| 国产精品hd在线播放| 日本成人精品视频| 71pao成人国产永久免费视频 | 欧美精品色视频| 欧美亚洲国产精品久久蜜芽| 亚洲最大综合网| 亚洲永久视频| 亚洲国内精品自在自线官| 最新加勒比隔壁人妻| 久久女人网| 亚洲免费毛片| 国产中文一区二区苍井空| 色综合色国产热无码一| 国产香蕉在线| 国产人人干| 国产成人精品视频一区视频二区| 91国内外精品自在线播放| 亚洲国产日韩视频观看| 亚洲无码A视频在线| 波多野结衣无码中文字幕在线观看一区二区| 国产午夜小视频|