AD42/320Z-0公司進口原裝現貨/隨時可以發貨!
歡迎光臨瀚佳科技(深圳)有限公司(李先生:0755-23140719 . 15323480717微信同號 . QQ:3441530696)
瀚佳科技(深圳)有限公司是一家專業經營IC電子元器件企業。代理分銷品牌有MAXIM、ADI、Microchip、TI、Xilinx、ALTERA、ATMEL、Infineon、SST、ISSI、NXP、PHILIPS、STC、Avago、Agilent、NS、POWER、ST、Winbond、FREESCALE、NS、FSC、IR、ON等世界知名品牌IC。包括:IC集成電路、傳感器、光電元件、濾波器、晶體、振蕩器、保險絲、繼電器、編程器、連接器、隔離器、可編程邏輯器件、功率模塊、電源模塊、光耦、二三極管、MOS管、電容電阻、電感等。 產品廣泛應用于航天、通訊、電力、電源、電子電器、儀器儀表、醫療器械、自動控制、汽車、船舶等高科技領域。公司備有部分現貨,并在北美、歐洲、亞洲、港澳臺有著良好供貨渠道,保證客戶拿到有竟力優勢產品。在市場競爭日趨激烈的當下,
瀚佳科技以自己良好的信用、可靠的質量、有競爭力的價格、快捷的物流和靈活的財務支持,在行業內贏得了很好的聲譽。
公司部分現貨:
MIC5381-PPYFTTR MIC5381-SSYFTTR MIC68220YMLTR MIC69303YMLTR MIC94040YFL MIC94041YFL MIC94042YFL MIC94043YFL MIC94060YMLTR MIC94060YMT MIC94060YMTTR MIC94061YML MIC94061YMLTR MIC94061YMT MIC94061YMTTR MIC94062YML MIC94062YMLTR MIC94062YMT MIC94062YMTTR MIC94063YML MIC94063YMLTR MIC94063YMT MIC94063YMTTR MIC94064YMT MIC94064YMTTR MIC94065YMT MIC94065YMTTR MIC94070YMT MIC94070YMTTR MIC94071YMT MIC94071YMTTR MIC94072YMT MIC94072YMTTR MIC94073YMT MIC94073YMTTR MIC94080YFT MIC94080YFTTR MIC94082YFT MIC94082YFTTR MIC94083YFT MIC94083YFTTR MIC94084YFT MIC94084YFTTR MIC94085YFT MIC94085YFTTR MIC94090YMT MIC94091YMT MIC94092YMT MIC94093YMT MIC94094YMT MIC94095YMT MIC94300YMTTR ML2870AGPZ060 ML2871GDZEAD MM1475CCBE MM3323HRRE MMA-062020-C3 MMA20312BT1 MMA20312BVT1 MMA25312BT1 MMG20271HT1 MML20242HT1 MMPF0100F0EP MMPF0100F0EPR2 MMPF0100F1EP MMPF0100F1EPR2 MMPF0100F2EP MMPF0100F2EPR2 MMPF0100NPEP MMPF0100NPEPR2 MMPF0100NPZES MMPF0100NPZESR2 MMZ09312BT1 MMZ25332BT1 MN101C66DAA MN101C66DAC MN101C66DAJ MN101C66DAG MP1519DQL-LF-Z MP2106DQ-LF-Z MP2119DQ-LF-Z MP2351DQ-LF-Z MP2602DQ-LF-Z MP26023DQ-LF-Z MP26021DQ-LF-Z MP26028EQ MP26028EQ-LF-Z MPC17559EP MPC17559EPR2 MS1AB-SLB MSC1201Y2RHHR MSC1201Y2RHHRG4 MSC1201Y2RHHT MSC1201Y2RHHTG4 MSC1201Y3RHHR MSC1201Y3RHHRG4 MSC1201Y3RHHT MSC1201Y3RHHTG4 MSC1202Y2RHHR MSC1202Y2RHHRG4 MSC1202Y2RHHT MSC1202Y2RHHTG4 MSC1202Y3RHHR MSC1202Y3RHHRG4 MSC1202Y3RHHT MSC1202Y3RHHTG4 MSC5503 MSP430F1121AIRGER MSP430F1121AIRGET MSP430F133IRTDR MSP430F133IRTDT MSP430F1481IRTDR MSP430F1481IRTDT MT6119N MT6120N-L MT6129N-L MT6301N MT6301N/B MT6305BN MT6305BN/C MT6601CA MT6601CA/A MT9T001C12STC MVPG15B-A2-NAE1C00 MXC6225XU MXL5003S N098E NB100LVEP221MNG NB100LVEP221MNRG NB100LVEP222MNG NB100LVEP222MNRG NB3N121KMNG NB3N121KMNR2G NB4L7210MNG NB4N121KMNG NB4N121KMNR2G NB618DL NB618DL-LF-Z NB7L111MMN NB7L111MMNG NB7L111MMNR2 NB7L111MMNR2G NB7N017MMN NB7N017MMNG NB7N017MMNR2 NB7N017MMNR2G NCN1154MUTAG NCN1188MUTAG NCN2612MTTWG NCN7200MTTWG NCN9252MUTAG NCP1508MNR2 NCP1508MNR2G NCP1509MNR2 NCP1509MNR2G NCP1546MNR2G NCP1547MNR2G NCP1589BMNTXG NCP2811AMTTXG NCP2811BMTTXG NCP3163BMNR2G NCP3163MNR2G NCP5030MTTXG NCP5201MN NCP5201MNG NCP5201MNR2 NCP5201MNR2G NCP5203MNR2 NCP5203MNR2G NCP5210MNR2 NCP5210MNR2G NCP5214MNR2 NCP5214MNR2G NCP5217AMNTXG NCP5220AMNR2 NCP5220AMNR2G NCP5220MNR2 NCP5220MNR2G NCP5360AMNR2 NCP5360AMNR2G NCP5360RMNR2G NCP5385MNR2G NCP5810DMUTXG NCP6121S52MNR2G NCP6131NS52MNR2G NCP6131S52MNR2G NCP6132AMNR2G NCP6132BMNR2G NCP6132MNR2G NCP6151S52MNR2G NCP6153MNTWG NCP694DSAN33T1G NCV3163MNR2G NCV51411MNR2G NCV8614BMNR2G NCV8614MNR2G NCV8842MNR2G NCV8843MNR2G NJG1617K11-TE1
智能命令行在SOPC系統中的設計
命令行是計算機系統中最重要的組件之一。它可以幫助開發人員更方便的控制系統。在調試過程中,可以讓開發人員隨時變更測試方法。
FPGA的成本越來越低,FPGA上的嵌入式系統(SOPC)也應用得越來越廣泛。但是相對其他成熟的計算機體系,SOPC系統現在還沒有命令行。為了更好的推廣SOPC應用,筆者開發了一個智能的命令行模塊,可以調用系統中的任意函數,降低了開發人員的使用難度。在最小配置時,它只有大約1000行代碼,占用14KB存儲容量,可以放在完全由FPGA片內資源構成的計算機系統中。它的結構也具有很好的擴展性,開發人員可以結合自己的需求,輕松添加命令,豐富它的特性。
命令行框架設計
1 總體設計
好的命令行要具有擴展性,開發人員能輕松添加自己的命令;也要傻瓜化,簡單易于使用。
為了達到這兩個目的,可采用編譯器創建的數組作為命令的總索引數據結構。為每條命令創建一個變量,指定它放在一個命令行專用的段中;其中用段“shell_cmd_tab”存放用戶主動創建的命令;用段“shell_cmd_tab_auto”存放系統中所有全局函數。創建變量只需調用宏SHELL_CMD_DECL,提供命令名、命令說明和函數名即可。這樣就可以實現C語言函數、變量、段、內存區域的自動映射過程。
命令的數據結構如下。
typedef struct _ncommand_t {
const char *name;
const char *descr;
shell_st_call cfunc;
} ncommand_t;
為了簡化命令的創建,定義下面這個宏來創建命令。
#define SHELL_CMD_DECL(name, usage, func) ncommand_t _shell_cmd_tab_##func _attribute_ ( (section( “.shell_cmd_tab”) ) )={ name, usage, func }; // small memory version
創建命令的實例如下:SHELL_CMD_DECL(“dump”, “Shows a memory dump”, hexdump);
2 連接腳本
在連接腳本里指定段的位置是簡化命令行使用流程的關鍵。GCC使用PROVIDE定義變量。筆者使用PROVIDE定義了各個段的起始地址和結束地址,從而可以在代碼中使用段地址查詢到所有命令。在編譯器使用的連接腳本中添加如下行定義函數表。
.shell :
{
PROVIDE (__ram_shell_start = ABSOLUTE(.));
. = ALIGN(32 / 8);
PROVIDE (__ram_shell_cmd_tab_begin = ABSOLUTE(.));
*(.shell_cmd_tab .shell_cmd_tab.*)
PROVIDE (__ram_shell_cmd_tab_end = ABSOLUTE(.));
PROVIDE (__ram_shell_cmd_tab_auto_begin = ABSOLUTE(.));
*(.shell_cmd_tab_auto .shell_cmd_tab_auto.*)
PROVIDE (__ram_shell_cmd_tab_auto_end = ABSOLUTE(.));
*(.shell .shell.*)
. = ALIGN(32 / 8);
PROVIDE (__ram_shell_end = ABSOLUTE(.));
} > ddr_sdram3 動態函數表創建
由工具自動根據系統中的全局函數創建的命令被稱為自動命令。自動命令使用戶可以在命令行中調用任意普通函數,即使開發人員沒有聲明這些函數為命令。自動命令也需要一個數組包含系統中所有全局函數的信息,這個表為動態函數表。使用一個腳本根據系統的可執行文件自動生成動態函數表。要先編譯軟件,生成可執行文件;再調用腳本創建動態函數表;最后再編譯出包含動態函數表的可執行文件。
在腳本中先使用GNU的nm工具從可執行文件導出所有全局符號,再使用grep提取出包括函數名的行,接著使用cut刪除函數名前的地址信息,使用sed將字符T替換為創建命令的宏SHELL_CMD_DECL_AUTO,并在行尾添加括號。最后將所有這些信息寫入一個C源代碼文件,交給編譯器編譯,就能得到一個動態函數表。
4 自動命令參數個數
為了便于開發人員使用,自動命令最好能適應所有函數類型,假設都是unsigned int的函數類型。對于可以成功轉化為unsigned int類型整數的參數,將真實的值傳遞給函數;對于其他參數,則將參數作為一個字符串傳遞給函數。
5 字符輸入
命令行從標準輸入設備中獲取字符。命令行只接受可打印的字符和特定的控制字符。如果收到了回車或者換行字符,代表用戶完成了命令輸入,就解析命令。解析命令前,去掉多余的空格符(0x20),即不允許有連續的兩個或多個空格符存在,命令的最后也不能有空格符。
6 參數解析
命令行模塊要從用戶輸入的字符串中解析出命令名和參數。為命令提供與DOS和Linux類似的兩個參數,argc和argv。argc表示參數的個數;argv是字符串指針的數組,最多10個字符串。argv[0]是第一個參數,argv[1]是第二個參數,如此類推。
7 函數解析
在代碼中使用SHELL_CMD_DECL創建了命令列表,使用工具創建了自動命令列表。這兩個表實際上都是數據結構ncommand_t的數組,其中有命令名和函數地址的信息。解析函數實際上就是根據在這兩個數組中依次比較函數名。如果用戶輸入的命令名和數組中的命令名一致,就使用對應的函數地址。
8 命令執行
得到函數地址后,就可以執行命令對應的函數。對于主動創建的命令,使用argc和argv作為參數。對于自動命令,命令行模塊先嘗試將原始參數轉換無符號整數。如果成功,使用無符號整數作為參數;如果不成功,則將原始參數的地址作為參數,實際上是一個字符串。
命令設計
完成總體設計后,就可以逐個添加開發需要的命令了。
● 幫助命令用于顯示所有命令名及其用法。
● IO命令用來訪問輸入輸出設備的寄存器,可以實現對外部設備的控制。
● 存儲器命令用來顯示、修改存儲器的值。最基本的包括:dump命令顯示指定位置的內存的值;modify命令用來修改指定內存單元的值。
● 用戶在使用過程中,會使用很多命令。能夠查詢歷史命令、循環執行歷史命令將給用戶帶來很多方便。因此筆者實現了三條命令。history_show用來顯示所有已經使用了的命令;history_del用來刪除指定的歷史命令;history_exec用來執行指定的歷史命令。
優化處理
Altera提供了簡化版的輸出函數alt_printf來替代printf,降低了嵌入式系統的開銷,筆者在命令行中也支持這個這個函數。命令行的代碼中,只調用SHELL_PRINT;在頭文件中,根據用戶設置,SHELL_PRINT使用標準的printf或者簡化的alt_printf。如果使用簡化的alt_printf,這個命令行占用的內存小于14KB。
在SOPC系統中的應用
Altera為SOPC系統開發提供的集成開發環境NIOS II IDE附帶了多個軟件實例。在使用這些軟件實例時,用戶只需要選擇模塊,完全不用新編代碼,非常簡單。
智能命令行模塊也可以作為NIOS II IDE的一個實例。先在“nios2edsexamplessoftware”目錄下為命令行創建一個子目錄shell_standard,再以其他軟件實例的template.xml為模板創為命令行建一個template.xml文件,然后復制命令行模塊的所有文件到這個目錄中。這樣,用戶在創建工程時,直接選中智能命令行模板,就可以使用智能命令行模塊了。
瀚佳科技是一家專業從事集成電路配套的供應商,在本行擁有多年的銷售經驗!
備有大量現貨庫存,誠信為本,客戶至上,為客戶把產品的質量關!
由于公司型號眾多,無法一一上傳,如在網站找不到您要的產品,請聯系業務員,本司可提供電子元器件配單服務。
聯系電話:0755-23140719/15323480719微信同號 (李先生)
聯系QQ:3441530696/3449124707
聯系地址:廣東省深圳市福田區中航路鼎城大廈1607室
公司網址:http://www.szhanjia.com
NLAS3158MNR2G NLAS4684FCT1 NLAS4717EPMTR2G NLAS52231MUR2G NLAS5223BLMNR2G NLAS5223BMNR2G NLAS5223BMUR2G NLAS5223LMNR2G NLAS5223MNR2G NLAS6234MUTBG NLAS7222AMTR2G NLAS7222AMUR2G NLAS7222AMUTAG NLAS7222BMUTAG NLAS7222BMUTBG NLAS7222CMUTBG NLAS7242MUTBG NLAS8252MUTAG NLSV22T244MUTAG RT8015AGQW RT8020BGQW RT8020GQW RT8072GQW RT8073GQW RT8082GQW RT8105AGQW RT8208BGQW RT8209BGQW RT8209MGQW RT8228AZQW RT8240BZQW RT8241DZQW RT8241EZQW RT8450BGQW RT8804PQV RT8859MGQW RT9032BGQWA RT9360APQV RT9364PQW RT9368AGQW RT9378BGQW RT9505GQW RT9607PQV RT9643PQV RT9913BPQV RT9939GQW RTC6685 RTM875N-606 RTM875N-606-VD-GRT RTR6200 RX-4581NB S1D137323C1 S1D13732B03C10B SA9521HN/C1 SAFEH1G84FB0F00R00 SAFSE942MALOT05R12 SAN4915416E SAPA1D1-MLF SC2516 SC2516MLTR SC2516MLTRT SC2614 SC2614ML SC2614MLTR SC2615 SC2615ML SC2615ML.TR SC2615MLTRT SC415MLTRT SC417MLTRT SC4501MLTRT SC4508AMLTRT SC452IMLTRT SC4624MLTRT SC603IMLTR SC603IMLTRT SCANSTA476TSD SCANSTA476TSD/NOPB SCSALPDSBGA SDIO101IHR,515 SDIO101IHR,551 SFDG75BS101 SFHG42PS101 SGM3005XD/TR SGM3133YTQ16G/TR SGM3138YTQ16G/TR SH6962B SH6962BCAORGCR SH6962BAAORGCRG4 SI1000-C-GM SI1000-C-GMR SI1001-C-GM SI1001-C-GMR SI1002-C-GM SI1002-C-GMR SI1003-C-GM SI1003-C-GMR SI1004-C-GM SI1010-A-GM SI1010-A-GMR SI1012-A-GM SI1012-A-GMR SI1013-A-GM SI1013-A-GMR SI1015-A-GM SI1015-A-GMR SI1060-A-GM SI1060-A-GMR SI1061-A-GM SI1061-A-GMR SI1062-A-GM SI1062-A-GMR SI1063-A-GM SI1063-A-GMR SI1064-A-GM SI1064-A-GMR SI1065-A-GM SI1065-A-GMR SI1080-A-GM SI1080-A-GMR SI1081-A-GM SI1081-A-GMR SI1082-A-GM SI1082-A-GMR SI1083-A-GM SI1083-A-GMR SI1084-A-GM SI1084-A-GMR SI1085-A-GM SI1085-A-GMR SI2143-A30-GM SI2143-A30-GMR SI2161-D-GM SI2161-D-GMR SI2165-D-GM SI2165-D-GMR SI3210-E-FM SI3210-E-FMR SI3210-E-GM SI3210M-E-FM SI3210M-E-FMR SI3210M-E-GM SI3215-B-FM SI3215-B-FMR SI3215-C-FM SI3215-C-FMR SI3215M-C-FM SI3215M-C-FMR SI3216-C-FM SI3216-C-FMR SI32171-B-FM SI32171-B-FMR SI32176-B-FM SI32176-B-FM1R SI32176-B-FMR SI32176-B-GM SI32176-B-GMR SI32176-B-GM1 SI32176-B-GM1R SI32178-B-FM SI32178-B-FM1 SI32178-B-FMR SI32178-B-FM1R SI3230-E-FM SI3230-E-FMR SI3230M-E-FM SI3230M-E-FMR SI4126BM SI4126-BMR SI4134T-BM Si4134T-BMR SI4206-BMR Si4210-D-GM SI4210-D-GMR TUA6039B1 TUA6045 TUSB7320RKMR TUSB7320RKMT TW9910-NA2-GR TW9910-NA2-GRT TW9910-NB2-GR TWL3029BZWR TX810IRHHR TX810IRHHT TXB0104GXUR TXB0104QRGYRQ1 TXB0104RGYR TXB0104RGYRG4 TXB0104RUTR TXB0108RGY TXB0108RGYR TXB0108RGYRG4 TXB0108RGYT TXB0108RGYTG4 TXB0304RUTR TXBN0304RUTR TXS0104ERGYR TXS0104ERGYRG4 TXS4555RUTR UAA3537 UAA3537GHN/C1 UAA3537HN UAA3544HN/C1 UAA3595HN/C1 UBX-G5010-ST UCC28230DRNR UCC28230DRNRG4 UCC28230DRNT UCC28230DRNTG4 UCC28231DRNR UCC28231DRNRG4 UCC28231DRNT UCC28231DRNTG4 UM5059 UP6206AQGK UPA2350T1G-E4 UPD482445G5-60-7JG UPD65946GN-102-2M UPD78F4218AGF-3BA UPG2035T5F-A UPG2035T5F-E2-A UPG2157T5F-A UPG2157T5F-E2-A UPG2251T6M-A UPG2251T6M-E2-A UPG2301T5L-E2-A UPG2311T5F-A UPG2311T5F-E2-A USB1T1102MPX USB1T1103MPX USB2240-AEZG-06 USB2241-AEZG-05 USB2241-AEZG-06 USB2244-AEZG-05 USB2244-AEZG-06 USB2502-AEZG USB2512A-AEZG USB2512A-AEZG-TR USB2512-AEZG USB2512B-AEZG USB2512B-AEZG-TR USB2512BI-AEZG USB2512BI-AEZG-TR USB2512I-AEZG USB2513-AEZG USB2513B-AEZC USB2513B-AEZC-TR USB2513B-AEZG USB2513BI-AEZG USB2513BI-AEZG-TR USB2514 USB2514AEZG USB2514-AEZG USB2514-AEZG-TR USB2514AEZG-TR USB2514B-AEZC USB2514B-AEZC-TR USB2514B-AEZG USB2514B-AEZG-TR USB2514I-AEZG USB2514I-AEZG-TR USB2524-ABZJ USB2532-1080AEN-TR USB2532I-1080AENTR USB2533-1080AEN-TR USB2533I-1080AENTR USB2534-1080AEN-TR USB2534I-1080AENTR USB3250-ABZJ USB3321C-GL-TR USB3330E-GL-TR USB3500-ABZJ USB3740B-AI2-TR USB3740B-AI9-TR USB5537-AKZE USB5537B-4100AKZE USB5537B4100AKZETR USB5537BI4100AKZE USB5537BI4100AKZETR UX6603Q-V3 V112 V126 VC0917 VC0918 VC0918D VC0928D VC0938D VC0938D-LF VC0938D-40LP Si4700-A09-GM Si4700-A09-GMR SI4700-B15-GM SI4700-B15-GMR SI4703-B16-GM SI4703-B16-GMR SI5315A-C-GM SI5315A-C-GMR SI5315B-C-GM SI5315B-C-GMR SI5316-C-GM SI5316-C-GMR SI5317A-C-GM SI5317A-C-GMR SI5317B-C-GM SI5317B-C-GMR SI5317C-C-GM SI5317C-C-GMR SI5317D-C-GM SI5317D-C-GMR SI5319B-C-GM SI5319B-C-GMR SI5319C-C-GM SI5319C-C-GMR SI5322-C-GM SI5322-C-GMR SI5323-C-GM SI5323-C-GMR SI5324A-C-GM SI5324A-C-GMR SI5324C-C-GM SI5324C-C-GMR SI5324D-C-GM SI5324D-C-GMR SI5325C-C-GM SI5325C-C-GMR SI5326A-C-GM SI5326A-C-GMR SI5326B-B-GM SI5326B-B-GMR SI5326B-C-GM SI5326B-C-GMR SI5326C-C-GM SI5326C-C-GMR SI5327C-C-GM SI5327C-C-GMR SI5327D-C-GM SI5327D-C-GMR SI7606DN-T1-E3 SI7606DN-T1-GE3 SI8501-C-IM SI8502-C-IM SI8503-C-IM SI8511-C-IM SI8512-C-IM SI8513-C-IM SiI9287ACNU SII9287CNU SIO1036-ZG SIP32401ADNP-T1GE4 SIP32402ADNP-T1GE4 SIP32411DNP-T1-GE4 SIP32431DNP3-T1GE4 SIS187 SKY12146-321LF SKY12338-337LF SKY12407-321LF SKY13267-321LF SKY13299-321LF SKY13318-321LF SKY13345-368LF SKY13352-337LF SKY13353-337LF SKY13374-397LF SKY13385-460LF SKY65111-348LF SKY65206-11 SKY65206-13 SKY65208-R4 SKY65208-11 SKY65227-11 SKY74073-13 SKY74117 SKY74117-13 SKY74117-13A SKY77148-15 SKY77149-14 SKY77162-12 SKY77175-14 SKY77252-13 SKY77255-11 SKY77304-17P SKY77324-12 SKY77324-12B SKY77328-13 SKY77328-13A SKY77506-13 SKY77506-13A SKY77518-11 SKY77518-11A SKY77518-21 SKY77518-21A SKY77531-11 SKY77531-21 SKY77542-11 SKY77547-11 SKY77552-11 SKY77592-21 SL28647BLC SL28647BLCT SL28647CLC SL28647CLCT SL28EB742ALC SL28EB742ALI SLG84450V SLG8SP628VTR SM0301L-423-G02 SM2110 SM8132AB-G-EL SN3100 SN3100JIR1 SN3103I420E SN3189I320E SN3218I424E SN3226JIR1 SN3227I208 SN3227I208E SN3228AI212E SN3228BI212E SN3726JIR1 SN4066JIR1 SN4915I416E SN65LVCP1414RLJR SN65LVCP1414RLJT
瀚佳科技是一家專業從事集成電路配套的供應商,在本行擁有多年的銷售經驗!
備有大量現貨庫存,誠信為本,客戶至上,為客戶把產品的質量關!
由于公司型號眾多,無法一一上傳,如在網站找不到您要的產品,請聯系業務員,本司可提供電子元器件配單服務。
聯系電話:0755-23140719/15323480719微信同號 (李先生)
聯系QQ:3441530696/3449124707
聯系地址:廣東省深圳市福田區中航路鼎城大廈1607室
公司網址:http://www.szhanjia.com