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

一種TI的C66X的快速啟動(dòng)方法

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

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

?

一種TI的C66X的快速啟動(dòng)方法

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

【文章摘要】

隨著DSP應(yīng)用技術(shù)的發(fā)展,其架構(gòu)和規(guī)模不斷擴(kuò)大,DSP系統(tǒng)的啟動(dòng)方式也逐步向多元化和自動(dòng)化發(fā)展。本文介紹C66X啟動(dòng)的過程并分析NOR FLASH啟動(dòng)的原理。通過對(duì)二級(jí)引導(dǎo)中的交互程序進(jìn)行研究,實(shí)現(xiàn)了DSP的快速啟動(dòng)以及具有較好交互性的操作界面。

【關(guān)鍵詞】

C66X;NOR FLASH啟動(dòng);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之后,關(guān)于該系列DSP的啟動(dòng)方式也成為技術(shù)難點(diǎn)之一。C66X系列DSP板提供了多種方式啟動(dòng):本地的或者遠(yuǎn)程的,基于ROM的或基于flash的。總結(jié)一下,共有以下7種:EMIF16啟動(dòng)、SRIO啟動(dòng)、以太網(wǎng)啟動(dòng)、PCI-e啟動(dòng)、I2C啟動(dòng)、SPI啟動(dòng)以及Hyper-Link啟動(dòng)。

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

1 NOR FLASH啟動(dòng)原理

因?yàn)镹OR FLASH是按字節(jié)尋址的,所以可以在NOR FLASH上直接執(zhí)行代碼。因此我們將一段引導(dǎo)代碼燒入到NOR FLASH的基地址,選擇EMIF模式啟動(dòng)DSP時(shí),該段代碼會(huì)將其后的初始化代碼搬移到指定位置。然后跳轉(zhuǎn)到C語(yǔ)言環(huán)境初始化程序入口地址“_c_ int00”。將這段代碼稱為一級(jí)bootloader。這段代碼的執(zhí)行時(shí)間,會(huì)隨著其后代碼的大小變化,在400微秒左右。

初始化代碼稱為二級(jí)bootloader,依據(jù)環(huán)境參數(shù)對(duì)PLL、DDR、UART、網(wǎng)絡(luò)等進(jìn)行初始化。初始化過程約10ms(初始化成功)。二級(jí)bootloader支持對(duì)用戶程序的多種方式的引導(dǎo),可以進(jìn)行單核引導(dǎo)、多核引導(dǎo)、網(wǎng)絡(luò)加載引導(dǎo)、以及直接跳轉(zhuǎn)。

圖1 .bin文件格式

總結(jié)來說,一級(jí)bootloader負(fù)責(zé)將代碼引導(dǎo)起來,二級(jí)bootloader負(fù)責(zé)將系統(tǒng)初始化。

2 一級(jí)bootloader的分析

一級(jí)bootloader是直接運(yùn)行在NOR FLASH上的。即PC指針指向NOR FLASH的基地址時(shí),一級(jí)bootloader就開始工作了。

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

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

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

圖2 .bin文件工具鏈

3 二級(jí)bootloader的研究與實(shí)現(xiàn)

二級(jí)bootloader的首要工作是完成整個(gè)系統(tǒng)的初始化,包含PLL串口、I2C以及DDR等。初始化的參數(shù)是從環(huán)境變量中獲取的,如果環(huán)境變量不存在,則使用默認(rèn)參數(shù)。在完成系統(tǒng)的初始化后,會(huì)提示用戶是否進(jìn)入交互界面,不進(jìn)入交互界面則繼續(xù)啟動(dòng)用戶程序。下面主要介紹交互程序的設(shè)計(jì)。

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

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

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

為實(shí)現(xiàn)查找最新輸入的功能,需要一個(gè)環(huán)形儲(chǔ)存池,用于保存前面使用過的指令。環(huán)形池使用鏈表實(shí)現(xiàn),用于實(shí)現(xiàn)上下鍵查找最近的輸入。環(huán)形池內(nèi)單個(gè)節(jié)點(diǎn),包含的信息有輸入的信息cmd_t[]、輸入信息長(zhǎng)度size_t、使用標(biāo)記used、上一個(gè)節(jié)點(diǎn)的地址、下一個(gè)節(jié)點(diǎn)的地址。

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

指令庫(kù)是由一張指令名表及指令函數(shù)組成,指令名表的每個(gè)條目由3個(gè)項(xiàng)組成。指令名:用于指令解析時(shí),查找相應(yīng)條目,如“dm”;指令入口:查找到指令條目后,根據(jù)條目?jī)?nèi)的該項(xiàng)可以調(diào)用相應(yīng)的指令函數(shù);指令說明:用于打印指令表的幫助信息。

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

添加指令,需要在指令名表里,加入相應(yīng)條目,同時(shí)實(shí)現(xiàn)相應(yīng)的指令函數(shù)即可。

功能函數(shù)封裝,將底層驅(qū)動(dòng)與功能函數(shù)隔離。使代碼對(duì)于不同硬件平臺(tái)具有較好適應(yīng)性以及可移植性。

如對(duì)于不同的FLASH,只需要在FLASH表內(nèi)添加相應(yīng)的條目以及相應(yīng)的底層驅(qū)動(dòng)即可。

static FLASHTable f_table[2]=

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

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

腳本功能,在啟動(dòng)用戶程序之前,執(zhí)行一些特定的動(dòng)作,以此達(dá)到不修改代碼,而增加功能。腳本會(huì)被保存在環(huán)境變量中,每次啟動(dòng)都會(huì)根據(jù)環(huán)境變量中的設(shè)置來決定是否執(zhí)行腳本,以及腳本中的內(nèi)容。

環(huán)境變量,是二級(jí)bootloader中的重要組成部分。它控制了系統(tǒng)的整體初始化,功能的選擇,用戶程序的啟動(dòng)方式等。對(duì)于不同應(yīng)用環(huán)境下,啟動(dòng)時(shí)的參數(shù)也是不同的。如對(duì)于不同的DDR3,我們需要在環(huán)境變量中設(shè)置不同的DDR初始化參數(shù)。

環(huán)境變量是可以在交互界面下修改的,修改后通過指令保存到設(shè)定的NOR FLASH的某片區(qū)域上。為了保證環(huán)境變量的可靠性,在環(huán)境變量的尾部加入一個(gè)CRC32的校驗(yàn)。每次讀取環(huán)境變量時(shí),把讀取的環(huán)境變量計(jì)算CRC32的值與NOR FLASH上的校驗(yàn)值對(duì)比,以確認(rèn)讀取到的環(huán)境變量是有效的。

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

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

圖3 DSP啟動(dòng)打印信息

4 結(jié)論

本文通過分析TI的C66X DSP的NOR FLASH的啟動(dòng)原理,研究設(shè)計(jì)了用戶交互程序,實(shí)現(xiàn)DSP的快速啟動(dòng)以及多樣的啟動(dòng)方式,使得用戶可以通過可視化的界面來進(jìn)行程序的固化以及引導(dǎo)。

【參考文獻(xiàn)】

[1] 樂燕芬. ARM嵌入式系統(tǒng)啟動(dòng)過程分析及實(shí)現(xiàn)[J].儀器儀表學(xué)報(bào),2006年S3期

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

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

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

[5] 衛(wèi)晉 劉峰 龍騰. 大規(guī)模多DSP實(shí)時(shí)網(wǎng)絡(luò)加載系統(tǒng)關(guān)鍵技術(shù)研究[J]. 計(jì)算機(jī)工程與應(yīng)用,2007年05期

猜你喜歡
指令界面功能
聽我指令:大催眠術(shù)
也談詩(shī)的“功能”
國(guó)企黨委前置研究的“四個(gè)界面”
ARINC661顯控指令快速驗(yàn)證方法
LED照明產(chǎn)品歐盟ErP指令要求解讀
基于FANUC PICTURE的虛擬軸坐標(biāo)顯示界面開發(fā)方法研究
關(guān)于非首都功能疏解的幾點(diǎn)思考
人機(jī)交互界面發(fā)展趨勢(shì)研究
手機(jī)界面中圖形符號(hào)的發(fā)展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
中西醫(yī)結(jié)合治療甲狀腺功能亢進(jìn)癥31例
主站蜘蛛池模板: 国产精品美女网站| 免费毛片a| 久久天天躁夜夜躁狠狠| 国产在线第二页| 亚洲日韩AV无码一区二区三区人| 欧美精品影院| 国产精品久久久久久搜索| 亚洲欧美精品日韩欧美| 国产亚洲一区二区三区在线| 人人爽人人爽人人片| 中国一级毛片免费观看| 114级毛片免费观看| 国产黄色片在线看| www.狠狠| 日韩高清一区 | 成年网址网站在线观看| 国产精品林美惠子在线观看| 国产成人一区在线播放| 亚洲无码电影| 国产另类乱子伦精品免费女| 国内自拍久第一页| 免费国产高清视频| 女人18一级毛片免费观看| 国产在线高清一级毛片| 日本伊人色综合网| 久久久成年黄色视频| 国产香蕉在线视频| 午夜无码一区二区三区在线app| 亚洲国产成人精品一二区| 日韩精品成人在线| 久久综合色88| 国产欧美网站| 国产欧美日韩另类| 四虎综合网| 欧美精品另类| 日韩高清无码免费| 亚洲中文字幕在线观看| 国产精品性| 国产精品污视频| 超碰精品无码一区二区| 久久精品国产在热久久2019| 亚卅精品无码久久毛片乌克兰 | 中文字幕第1页在线播| 九色最新网址| 中文字幕精品一区二区三区视频| 国产va免费精品| 国产成人精品一区二区| 国产激情无码一区二区APP| 免费不卡在线观看av| 国产乱子伦视频三区| 亚洲一区二区约美女探花| 日本午夜精品一本在线观看| 久热中文字幕在线观看| 亚洲高清无码精品| 国产欧美亚洲精品第3页在线| 亚洲国产成人麻豆精品| 国产情精品嫩草影院88av| 日韩黄色大片免费看| 午夜视频www| 女人18毛片一级毛片在线| igao国产精品| 久视频免费精品6| 丰满人妻被猛烈进入无码| 国产99精品视频| 亚洲人妖在线| 欧美a级完整在线观看| 亚洲欧美色中文字幕| 欧美午夜在线播放| 国产精品自拍露脸视频| 亚洲天堂免费| 国产小视频在线高清播放| 这里只有精品国产| 毛片免费试看| 在线观看国产精品日本不卡网| 免费毛片a| 国产欧美日韩一区二区视频在线| 亚洲色欲色欲www在线观看| 国产成人AV综合久久| 久久综合九色综合97婷婷| 精品亚洲欧美中文字幕在线看| 精品少妇三级亚洲| 国产喷水视频|