8.1ADS集成開發環境組成介紹
ARM ADS全稱為ARM Developer Suite。是ARM公司推出的新一代ARM集成開發工具。現在ADS的最新版本是1.2,它取代了早期的ADS1.1和ADS1.0。它除了可以安裝在Windows NT4,Windows 2000,Windows 98和Windows 95操作系統下,還支持Windows XP和Windows Me操作系統。
ADS由命令行開發工具,ARM時實庫,GUI開發環境(Code Warrior和AXD),實用程序和支持軟件組成。有了這些部件,用戶就可以為ARM系列的RISC處理器編寫和調試自己的開發應用程序了。
下面就詳細介紹一下ADS的各個組成部分。
8.1.1命令行開發工具
這些工具完成將源代碼編譯,鏈接成可執行代碼的功能。
ADS提供下面的命令行開發工具:
armcc
armcc是ARM C編譯器。這個編譯器通過了Plum Hall C Validation Suite為ANSI C的一致性測試。armcc用于將用ANSI C編寫的程序編譯成32位ARM指令代碼。
因為armcc是我們最常用的編譯器,所以對此作一個詳細的介紹。
在命令控制臺環境下,輸入命令:
armcc –help
可以查看armcc的語法格式以及最常用的一些操作選項
armcc最基本的用法為:armcc [options] file1 file2 ... filen
這里的option是編譯器所需要的選項,fiel1,file2…filen是相關的文件名。
這里簡單介紹一些最常用的操作選項。
-c:表示只進行編譯不鏈接文件;
-C:(注意:這是大寫的C)禁止預編譯器將注釋行移走;
-D 這里symbol默認為1; -E:僅僅是對C源代碼進行預處理就停止; -g -I -o -O0:不優化; -O1:這是控制代碼優化的編譯選項,大寫字母O后面跟的數字不同,表示的優化級別就不同,-O1關閉了影響調試結果的優化功能; -O2:該優化級別提供了最大的優化功能; -S:對源程序進行預處理和編譯,自動生成匯編文件而不是目標文件; -U -W 有關更詳細的選項說明,讀者可查看ADS軟件的在線幫助文件。 armcpp armcpp是ARM C++編譯器。它將ISO C++或EC++編譯成32位ARM指令代碼。 tcc tcc是Thumb C編譯器。該編譯器通過了Plum Hall C Validation Suite為ANSI一致性的測試。tcc將ANSI C源代碼編譯成16位的Thumb指令代碼。 tcpp tcpp是Thumb C++編譯器。它將ISO C++和EC++源碼編譯成16位Thumb指令代碼。 armasm armasm是ARM和Thumb的匯編器.它對用ARM匯編語言和Thumb匯編語言寫的源代碼進行匯編。 armlink armlink是ARM連接器。該命令既可以將編譯得到的一個或多個目標文件和相關的一個或多個庫文件進行鏈接,生成一個可執行文件,也可以將多個目標文件部分鏈接成一個目標文件,以供進一步的鏈接。ARM鏈接器生成的是ELF格式的可執行映像文件。 armsd armsd是ARM和Thumb的符號調試器。它能夠進行源碼級的程序調試。用戶可以在用C或匯編語言寫的代碼中進行單步調試,設置斷點,查看變量值和內存單元的內容。 8.1.1.1armcc用法詳解 下面為讀者介紹上述的4種ARM C和C++編譯器的命令通用語法。 compiler [PCS-options] [source-language] [search-paths] [preprocessor-options] [output-format] [target-options] [debug-options] [code-generation-options] [warning-options] [additional-checks] [error-options] [source] 用戶可以通過命令行操作選項控制編譯器的執行。所有的選項都是以符號”-”開始,有些選項后面還跟有參數。在大多數情況下,ARM C和C++編譯器允許在選項和參數之間存在空格。 命令行中各個選項出現順序可以任意。 這里的compiler是指armcc,tcc,armcpp和tcpp中的一個; PCS-options:指定了要使用的過程調用標準; source-language:指定了編譯器可以接受的編寫源程序的語言種類。對于C編譯器默認的語言是ANSI C,對于C++編譯器默認是ISO標準C++; search-paths:該選項指定了對包含的文件(包括源文件和頭文件)的搜索路徑; preprocessor-options:該選項指定了預處理器的行為,其中包括預處理器的輸出和宏定義等特性; output-format:該選項指定了編譯器的輸出格式,可以使用該項生成匯編語言輸出列表文件和目標文件; target-options:該選項指定目標處理器或ARM體系結構; debug-options:該選項指定調試信息表是否生成,和該調試信息表生成時的格式; code-generation-options:該選項指定了例如優化,字節順序和由編譯器產生的數據對齊格式等選項; warning-options:該選項決定警告信息是否產生; additional-checks:該選項指定了幾個能用于源碼的附加檢查,例如檢查數據流異常,檢查沒有使用的聲明等; error-options:該選項可以關閉指定的可恢復的錯誤,或者將一些指定的錯誤降級為警告; source:該選項提供了包含有C或C++源代碼的一個或多個文件名,默認的,編譯器在當前路徑尋找源文件和創建輸出文件。如果源文件是用匯編語言編寫的(也就是說該文件的文件名是以.s作為擴展名),匯編器將被調用來處理這些源文件。 如果操作系統對命令行的長度有限制,可以使用下面的操作,從文件中讀取另外的命令行選項: -via filename 該命令打開文件名為filename的文件,并從中讀取命令行選項。用戶可以對-via進行嵌套調用,亦即,在文件filename中又通過-via finlename2包含了另外一個文件。 在下面的例子中,從input.txt文件中讀取指定的選項,作為armcpp的操作選項: armcpp -via input.txtsource.c 以上是對編譯器選項的一個簡單概述。它們(包括后面還要介紹的其他一些命令工具)既可以在命令控制臺環境下使用,同時由于它們被嵌入到了ADS的圖形界面中,所以也可以在圖形界面下使用。 8.1.1.2armlink用法詳解 在介紹armlink的使用方法之前,先介紹要涉及到的一些術語。 映像文件(image):是指一個可執行文件,在執行的時候被加載到處理器中。一個映像文件有多個線程。它是ELF(Executable and linking format)格式的。 段(Section):描述映像文件的代碼或數據塊。 RO:是Read-only的簡寫形式。 RW:是Read-write.的簡寫形式。 ZI:是Zero-initialized的簡寫形式。 輸入段(input section):它包含著代碼,初始化數據或描述了在應用程序運行之前必須要初始化為0的一段內存。 輸出段(output section):它包含了一系列具有相同的RO,RW或ZI屬性的輸入段。 域(Regions):在一個映像文件中,一個域包含了1至3個輸出段。多個域組織在一起,就構成了最終的映像文件。 Read Only Position Independent(ROPI):它是指一個段,在這個段中代碼和只讀數據的地址在運行時候可以改變。 Read Write Position Independent(RWPI):它是指一個段,在該段中的可讀/寫的數據地址在運行期間可以改變。 加載時地址:是指映像文件位于存儲器(在該映像文件沒有運行時)中的地址。 運行時地址:是指映像文件在運行時的地址。 下面介紹一下armlink命令的語法 完整的連接器命令語法如下: armlink [-help] [-vsn] [-partial] [-output file] [-elf] [-reloc][-ro-base address] [-ropi] [-rw-base address] [-rwpi] [-split] [-scatter file][-debug|-nodebug][-remove?RO/RW/ZI/DBG]|-noremove] [-entry location ] [-keep section-id] [-first section-id] [-last section-id] [-libpath pathlist] [-scanlib|-noscanlib] [-locals|-nolocals] [-callgraph] [-info topics] [-map] [-symbols] [-symdefs file] [-edit file] [-xref] [-xreffrom object(section)] [-xrefto object(section)] [-errors file] [-list file] [-verbose] [-unmangled |-mangled] [-match crossmangled][-via file] [-strict] [-unresolved symbol][-MI|-LI|-BI] [input-file-list] 上面各選項的含義分別為: -help 這個選項會列出在命令行中常用的一些選項操作。 -vsn 這個選項顯示出所用的armlink的版本信息。 -partial 用這個選項創建的是部分鏈接的目標文件而不是可執行映像文件。 -output file 這個選項指定了輸出文件名,該文件可能是部分鏈接的目標文件,也可能是可執行映像文件。如果輸出文件名沒有特別指定的話,armlink將使用下面的默認: 如果輸出是一個可執行映像文件,則生成的輸出文件名為__image.axf; 如果輸出是一個部分鏈接的目標文件,在生成的文件名為__object.o; 如果沒有指定輸出文件的路徑信息,則輸出文件就在當前目錄下生成。如果指定了路徑信息,則所指定的路徑成為輸出文件的當前路徑。 -elf 這個選項生成ELF格式的映像文件,這也是armlink所支持的唯一的一種輸出格式,這是默認選項。 -reloc 這個選項生成可重定址的映像。 一個可重定址的映像具有動態的段,這個段中包含可重定址信息,利用這些信息可以在鏈接后,進行映像文件的重新定址; -reloc,-rw-base一起使用,但是如果沒有-split選項,鏈接時會產生錯誤。 -ro-base address 這個選項將包含有RO(Read-Only屬性)輸出段的加載地址和運行地址設置為address,該地址必須是字對齊的,如果沒有指定這個選項,則默認的RO基地址值為0x8000。 -ropi 這個選項使得包含有RO輸出段的加載域和運行域是位置無關的。如果該選項沒有使用,則相應的域被標記為絕對的。通常每一個只讀屬性的輸入段必須是只讀位置無關的。如果使用了這個選項,armlink將會進行以下操作: 檢查各段之間的重定址是否有效; 確保任何由armlink自身生成的代碼是只讀位置無關的。 這里希望讀者注意的是,ARM工具直到armlink完成了對輸入段的處理后,才能夠決定最終的生成映像是否為只讀位置無關的。這就意味著,即使為編譯器和匯編器指定了ROPI選項,armlink也可能會產生ROPI錯誤信息。 -rw-base address 這個選項設置包含RW(Read/Write屬性)輸出段的域的運行時地址,該地址必須是字對齊的。 如果這個選項和-split選項一起使用,將設置包含RW輸出段的域的加載和運行時地址都設置在address處。 -rwpi 這個選項使得包含有RW和ZI(Zero Initialization,初始化為0)屬性的輸出段的加載和運行時域為位置無關的。如果該選項沒有使用,相應域標記為絕對的。這個選項要求-rw-base選項后有值,如果-rw-base沒有指定的話,默認其值為0,即相當于-rw-base 0。通常每一個可寫的輸入段必須是可讀/可寫的位置無關的。 如果使用了該選項,armlink會進行以下的操作: 檢查可讀/可寫屬性的運行域的輸入段是否設置了位置無關屬性; 檢查在各段之間的重定址是否有效; 生成基于靜態寄存器sb的條目,這些在RO和RW域被拷貝和初始化的時候會用到。 編譯器并不會強制可寫的數據一定要為位置無關的,這就是說,即使在為編譯器和匯編器指定了RWPI選項,armlink也可能生成數據不是RWPI的信息。 -split 這個選項將包含RO和RW屬性的輸出段的加載域,分割成2個加載域。一個是包含RO輸出段的加載域,默認的加載地址為0x8000,但是可以用-ro-base選項設置其他的地址值,另一個加載域包含RO屬性的輸出段,由-rw-base選項指定加載地址,如果沒有使用-rw-base選項的話,默認使用的是-rw-base 0。 -scatter file 這個選項使用在file中包含的分組和定位信息來創建映像內存映射。 注意,如果使用了該選項的話,必須要重新實現堆棧初始化函數__user_initial_stackheap()。 -debug 這個選項使輸出文件包含調試信息,調試信息包括,調試輸入段,符號和字符串表。這是默認的選項。 -nodebug 這個選項使得在輸出文件中不包含調試信息。生成的映像文件短小,但是不能進行源碼級的調試。armlink對在輸入的目標文件和庫函數中發現的任何調試輸入段都不予處理,當加載映像文件到調試器中的時候,也不包含符號和字符串信息表。這個選項僅僅是對裝載到調試器的映像文件的大小有影響,但是對要下載到目標板上的二進制代碼的大小沒有任何影響。 如果用armlink進行部分鏈接生成目標文件而不是映像文件,則雖然在生成的目標文件中不含有調試輸入段,但是會包含符號和字符串信息表。 這里特別請讀者注意的是: 如果要在鏈接完成后使用fromELF工具的話,不可使用-nodebug選項,這是因為如果生成的映像文件中不包含調試信息的話,則有下面的影響: fromELF不能將映像文件轉換成其他格式的文件; fromELF不能生成有意義的反匯編列表。 -remove (RO/RW/ZI/DBG) 使用這個選項會將在輸入段未使用的段從映像文件中刪除。如果輸入段中含有映像文件入口點或者該輸入段被一個使用的段所引用,則這樣的輸入段會當作已使用的段。 在使用這個選項時候要注意,不要刪除異常處理函數。使用-keep選項來標識異常處理函數,或用ENTRY偽指令標明是入口點。 為了更精確的控制刪除未使用的段,可以使用段屬性限制符。可以使用以下的段屬性限制符: RO 刪除所有未使用的RO屬性的段; RW 刪除所有未使用的RW屬性的段; ZI 刪除所有未使用的ZI屬性的段; DBG 刪除所有未使用的DEBUG屬性的段。 這些限制符出現的順序是任意的,但是它們必須要有”( )”括住,多個限制符之間要用符號”/”進行間隔。ADS軟件中默認選項是-remove (RO/RW/ZI/DBG)。 如果沒有指定段屬性限制符,則所有未使用的段都會被刪除。因為-remove就等價于-remove(RO/RW/ZI/DBG)選項。 -noremove 這個選項保留映像文件中所有未被使用的段。 -entry location 這個選項指定映像文件中唯一的初始化入口點。一個映像文件可以包含多個入口點,使用這個命令定義的初始化入口點是存放在可執行文件的頭部,以供加載程序加載時使用。當一個映像文件被裝載時,ARM調試器使用這個入口點地址來初始化PC指針。初始化入口點必須滿足下面的條件: 映像文件的入口點必須位于運行域內; 運行域必須是非覆蓋的,并且必須是固定域(就是說,加載域和運行域的地址相同)。 在這里可以用以下的參數代替location參數: 1.入口點地址:這是一個數值,例如-entry 0x0; 2.符號:該選項指定映像文件的入口點為該符號所代表的地址處,比如: -entry int_handler 表示程序入口點在符號int_handler所在處。 如果該符號有多處定義存在,armlink將產生出錯信息。 offset+object(section):該選項指定在某個目標文件的段的內部的某個偏移量處為映像文件的入口地址,例如: -entry 8+startup(startupseg) 如果偏移量值為0,可以簡寫成object(section),如果輸入段只有一個,則可以簡化為object。 -keep section-id 使用該選項,可以指定保留一個輸入段,這樣的話,即使該輸入段沒有在映像文件中使用,也不會被刪除。參數section-id取下面一些格式: 1.symbol 該選項指定定義symbol的輸入段不會在刪除未使用的段時被刪除。如果映像文件中有多處symbol定義存在,則所有包含symbol定義的輸入段都不會被刪除。例如: -keep int_handler 則所有定義int_handler的符號的段都會保留,而不被刪除。 為了保留所有含有以_handler結尾的符號的段,可以使用如下的選項: -keep *_handler 2.object(section) 這個選項指定了在刪除未使用段時,保留目標文件中的section段。輸入段和目標名是不區分大小寫的,例如,為了在目標文件vectors.o中保留vect段,使用: -keep vectors.o(vect) 為了保留vectors.o中的所有以vec開頭的段名,可以使用選項: -keep vectors.o(vec*) 3.object 這個選項指定在刪除未使用段時,保留該目標文件唯一的輸入段。目標名是不區分大小寫的,如果使用這個選項的時候,目標文件中所含的輸入段不止一個的話,armlink會給出出錯信息。比如,為了保留每一個以dsp開頭的只含有唯一輸入段的目標文件,可以使用如下的選項: -keep dsp*.o -first section-id 這個選項將被選擇的輸入段放在運行域的開始。通過該選項,將包含復位和中斷向量地址的段放置在映像文件的開始,可以用下面的參數代替section-id: 1.symbol 選擇定義symbol的段。禁止指定在多處定義的symbol,因為多個段不能同時放在映像文件的開始。 2.object(section) 從目標文件中選擇段放在映像文件的開始位置。在目標文件和括號之間不允許存在空格,例如 -first init.o(init) 3.object 選擇只有一個輸入段的目標文件。如果這個目標文件包含多個輸入段,armlink會產生錯誤信息。用這個選項的例子如下: -first init.o 這里希望讀者注意的是: 使用-first不能改變在域中按照RO段放在開始,接著放置RW段,最后放置ZI段的基本屬性排放順序。如果一個域含有RO段,則RW或ZI段就不能放在映像文件的開頭。類似地,如果一個域有RO或RW段,則ZI段就不能放在文件開頭。 兩個不同的段不能放在同一個運行時域的開頭,所以使用該選項的時候只允許將一個段放在映像文件的開頭。 -last section-id 這個選項將所選擇的輸入段放在運行域的最后。例如,用這個選項能夠強制性的將包含校驗和的輸入段放置在RW段的最后。使用下面的參數可以替換section-id。 1.symbol 選擇定義symbol的段放置在運行域的最后。不能指定一個有多處定義的symbol。使用該參數的例子如下: -last checksum 2.object(section) 從目標文件中選擇section段。在目標文件和后面的括號間不能有空格,用該參數的例子為: -last checksum.o(check) 3. object 選擇只有一個輸入段的目標,如果該目標文件中有多個輸入段,armlink會給出出錯信息。 和-first選項一樣,需要讀者注意的是; 使用-last選項不能改變在域中將RO段放在開始,接著放置RW段,最后放置ZI段的輸出段基本的排放順序。如果一個域含有ZI段,則RW段不能放在最后,如果一個域含有RW或ZI段,則RO段不能放在最后。 在同一個運行域中,兩個不同的段不能同時放在域的最后位置。 -libpath pathlist 這個選項為ARM標準的C和C++庫指定了搜索路徑列表。 注意,這個選項不會影響對用戶庫的搜索路徑。 這個選項覆蓋了環境變量ARMLIB所指定的路徑。參數pathlist是一個以逗號分開的多個路徑列表,即為path1, path2,... pathn,這個路徑列表只是用來搜索要用到的ARM庫函數。默認的,對于包含ARM庫函數的默認路徑是由環境變量ARMLIB所指定的。 -scanlib 這個選項啟動對默認庫(標準ARM C和C++庫)的掃描以解析引用的符號。這個選項是默認的設置。 -noscanlib 該選項禁止在鏈接時候掃描默認的庫。 -locals 這個選項指導鏈接器在生成一個可執行映像文件的時候,將本地符號添加到輸出符號信息表中。該選項是默認設置。 -nolocals 這個選項指導鏈接器在生成一個可執行映像文件的時候,不要將本地符號添加到輸出符號信息表中。如果想減小輸出符號表的大小,可以使用該選項。 -callgraph 該選項創建一個HTML格式的靜態函數調用圖。這個調用圖給出了映像文件中所有函數的定義和引用信息。對于每一個函數它列出了: 1.函數編譯時候的處理器狀態(ARM狀態還是Thumb狀態); 2.調用func函數的集合; 3.被func調用的函數的集合; 4.在映像文件中使用的func尋址的次數。 此外,調用圖還標識了下面的函數: 1.被interworking veneers所調用的函數; 2.在映像文件外部定義的函數; 3.允許未被定義的函數(以weak方式的引用); 靜態調用圖還提供了堆棧使用信息,它顯示出了: 1.每個函數所使用的堆棧大小; 2.在全部的函數調用中,所用到的最大堆棧大小。 -info topics 這個選項打印出關于指定種類的信息,這里的參數topics是指用逗號間隔的類型標識符列表。類型標識符列表可以是下面所列出的任意一個: 1.sizes 為在映像文件中的每一個輸入對象和庫成員列出了代碼和數據(這里的數據包括,RO數據,RW數據,ZI數據和Debug數據)的大小; 2.totals 為輸入對象文件和庫,列出代碼和數據(這里的數據包括,RO數據,RW數據,ZI數據和Debug數據)總的大小; 3. veneers 給出由armlink生成的veneers的詳細信息; 4. unused 列出由于使用-remove選項而從映像文件中被刪除的所有未使用段。 注意:在信息類型標識符列表之間不能存在空格,比如可以輸入 -info sizes,totals 但是不能是 -info sizes, totals(即在逗號和totals之間有空格是不允許的) -map 這個選項創建映像文件的信息圖。映像文件信息圖包括映像文件中的每個加載域,運行域和輸入段的大小和地址,這里的輸入段還包括調試信息和鏈接器產生的輸入段。 -symbols 這個選項列出了鏈接的時候使用的每一個局部和全局符號。該符號還包括鏈接生成的符號。 -symdefs file 這個選項創建一個包含來自輸出映像文件的全局符號定義的符號定義文件。 默認的,所有的全局符號都寫入到符號定義文件中。如果文件file已經存在,鏈接器將限制生成在已存在的symdefs文件中已列出的符號。
上一篇:基于Linux/QT與GPRS的遠程集群式心臟病人實時診斷系統
下一篇:μC/OS-Ⅱ在ARM單片機S3C44B0x上的移植
推薦閱讀
史海拾趣
隨著半導體行業的競爭加劇,價格戰和技術更新速度不斷加快。CSDC面臨著巨大的市場壓力。為了應對這些挑戰,公司決定調整戰略,專注于高端市場的開發。通過加大研發投入,提升產品質量和性能,CSDC逐漸在高端市場站穩了腳跟,實現了業務的穩步增長。
隨著全球環保意識的提高,半導體行業也面臨著環保和可持續發展的挑戰。CSDC積極響應這一趨勢,將環保理念融入公司的生產和運營中。通過采用環保材料和工藝,減少生產過程中的污染排放,CSDC不僅降低了對環境的影響,還提升了企業的社會形象。同時,公司還積極參與環保公益活動,推動半導體行業的綠色發展。
這些故事展示了半導體設備公司可能經歷的一些關鍵發展階段和面臨的挑戰。雖然這些故事是虛構的,但它們基于半導體行業的現實背景和趨勢進行構建,具有一定的參考價值。
隨著全球環保意識的不斷提高,Astec也開始關注綠色環保和可持續發展問題。公司積極采用環保材料和節能技術,推出了一系列綠色電源產品。同時,Astec還加大了對環保技術的研發力度,努力在保持產品性能的同時,降低生產過程中的能耗和排放。這些舉措不僅有助于公司應對環保法規的挑戰,還提升了公司的社會形象。
在電子行業的快速發展中,艾吉芯公司憑借其在半導體芯片研發領域的深厚積累,成功推出了一系列高性能的半導體分立器件。這些產品不僅滿足了市場對功率半導體的高效、穩定需求,更在技術創新方面取得了顯著突破。艾吉芯公司通過持續的研發投入和嚴格的生產質量控制,確保了產品的可靠性和競爭力,逐漸在市場中樹立起了良好的口碑。
在2000年代初,ECLIPSE公司是一家專注于企業級軟件開發的公司。公司內部的一個小型團隊開發了一個名為“Eclipse”的集成開發環境(IDE),用于提高內部項目的開發效率。隨著Eclipse的內部使用越來越廣泛,公司高層意識到其巨大的潛力,決定將Eclipse開源,并成立專門的Eclipse部門來管理和推廣這一項目。通過開放源代碼和社區合作,Eclipse迅速吸引了全球開發者的關注,并逐漸成長為開源開發領域的領軍者。
爭排名很幼稚——臺積電工程師寫給學弟學妹們的信 都說三十而立,但是回頭看看卻幾乎一事無成。 維護中東和平這種大事咱做不了,雞毛蒜皮的瑣事又不愿做,典型的眼高手低。平日里大嘴教育小編們的話,其實對自己同樣適用。于是,我開始反省, ...… 查看全部問答∨ |
第一章簡略地討論數字信號處理的基本思想及其優越性。 第二章介紹世界各大公司DSP處理器的最新發展,以及系統設計工程師們最為關心的如何評價和選擇DSP處理器的問題。 第三章比較系統地介紹目前在國內外應用最廣泛的TI的TMS320C2000、C5000和C600 ...… 查看全部問答∨ |
問91program:在eeworld下了你上傳的CVOImage類后,發現顯示PNG圖片,但是發現PNG的背景是白色,不是透明, 請問這是這個類本身的原因,還是因為使用不對的原因。其他有沒有誰用過CVOImgae的??… 查看全部問答∨ |
本人剛進入無線通訊領域,無甚經驗,求高手指點一二。 具體項目關于zigbee技術的無線通訊,使用CC2430單片機實現,編譯器為IAR,難處在于有許多代碼看不懂,請樂意幫助的朋友留個聯系方式,便于討教!!感恩戴德!… 查看全部問答∨ |
本人正在學習電動工具電路設計,看到一款電鉆的電池包中的一個電路板,其中有多達12塊同型號MOS管,不太懂這塊電路板中為何用到如此多的MOS管?這些電路的作用和功能是什么?如何選擇MOS管型號和關鍵指標?叩謝 [ 本帖最后由 lord 于 2011-10- ...… 查看全部問答∨ |
我買的是一個lpc2131的arm板子然后總是出現以下情況,我用的是jlink,這樣之后就沒法燒代碼了,然后只有用j-tag燒寫之后才能重新編碼?我用的燒寫方式是debugInRam,另外與debuginflash,reinflash這三種方式有什么區別?… 查看全部問答∨ |
新手求教! 現使用MSP430FG437數字IO直接連接PNP三極管基極,以控制三極管實現開關功能。但連接三極管基極的數字IO端口在對應PxOUT控制字為1時,正常輸出3.3V高電平,而至低電平時則輸出2.3V電壓而非典型值。三極管集電極接3.3V供電。反復 ...… 查看全部問答∨ |
寫過兩款STM32芯片的程序,STM32F107和STM32F207,但總感覺Flash這一塊用的不爽。隨便說說,當發牢騷了,萬一有路過的大神剛好看到了,而恰巧您又有時間的話,給暫指導指導思路那必然也是極好的。 首先,是寫Flash,在F1里,Flash倒 ...… 查看全部問答∨ |
本帖最后由 jameswangsynnex 于 2015-3-3 20:02 編輯 偶得一個iPhone4全系列原理圖設計圖紙,我自己也用不著,分享出來,給大家看看。 … 查看全部問答∨ |
因為換成了LM4F120的launchpad,USB Host和CAN兩個的計劃取消掉了。剩下的就是RTOS了,ti提供了FreeRTOS的demo,不太喜歡FreeRTOS,也不太了解它,打算換個別的上去。TI默認的Demo是切換LED的。… 查看全部問答∨ |