Ⅰ 請教一個MDK320下設置ADS12編譯器的問題
char是C/C++整型數據中比較古怪的一個,其它的如int/long/short等不指定signed/unsigned時都默認是signed,但char在標准中是unsigned,編譯器可以實現為帶符號的,也可以實現為不帶符號的,有些編譯器如pSOS的編譯器,還可以通過編譯開關來指定它是有符號數還是無符號數。 而且關肢哪於char還有一個特殊的語言就是char *,它在C/C++中有專門的語義,既不同於signed char *,也不同於unsigned char *,專門用於指以'\0'為結束的字元畝飢悄串wchar_t是C/C++的字元數據類型,char是8位字元類型,最多隻能包含256種字元,許多外文字元集所含的字元數目超過256個,char型無法表示。1個二進制位稱為1個bit(位),8個二進制位稱為1個Byte(位元組),8 bit = 1 byte。2個位元組就是1個Word(1個字,16位),DWORD(Double Word)就是雙字的意思,兩個字(32位)。 typedef unsigned long DWORD; 關於DWORD使用中重要的一點。DWORD 現在表示 32bit 無符號整數,即使以後 Windows 升級到64位,DWORD 仍然是 32bit 無符號整數(也許以後的 long 不是32bit了,只需要重新定義一下 DWORD 就可以了)。String就是java中的字元串,用雙引號引起來的幾個字元.如"Abc","一天". text就是大型的字元串UNICODE_STRING是一個迅渣結構.當你聲明一個UNICODE_STRING時它的成員未初始化.參數定義:Length-----buffer的位元組長度,不包括終止符「NULL」MaximumLength---buffer的的總的位元組大小。Up to MaximumLength bytes may be written into the buffer without trampling memory.Buffer---Pointer to a wide-character string指向寬字元串的指針%D%A追問:%DWORD不是字元類型的嗎?%D%A回答:%D%A不是DWORD是雙字類型 4個位元組,API函數中有很多參數和返回值是DWORD的 相關的有 WORD BYTE 等DWORD就是32bit的unsigned long%D%A
Ⅱ 為毛這么多軟體不能用arm編譯器怎麼裝
一般安裝了一個軟體,會包括編譯環境,編碼器,優化器等,現在都集成了很多,ARM支持C,匯編,高級的還有vc++ 比如我用的ads1.20 就有那麼多。
至於下程序到arm上,需要安裝一個軟體,我用的是HJTAG,因為我用JTAG模擬,所以我一共安裝了2個軟體。
但如果跑系統,你還得有頭文件,這個與你arm 用的操作系統有關,是代碼。
步驟肯定會有,1是你不會機器碼,在arm上就是機器碼,所以一定會有編譯器,但這些是集成的,下載軟體是燒程序的,這個和下載器配套。其他的是編寫程序相關的,初學者可以不跑系統,直接當單片機用,我至今只玩過ucos ,沒玩linux
Ⅲ ads編譯器編譯混合編程總是報錯
是因為匯編器的開關沒有打開,細心檢查一下工程參數的設定吧
Ⅳ 使用ADS轉到Keil的關於串口的問題
ADS和keil是兩個不同的編譯軟體,編譯選項和編譯器都不一樣,所以同樣的代碼出現不同的結果也是常見的.你先把代碼下載到硬體中運行一下,看看這種問題會不會還出現.如果出現:
首先,ADS可以完美執行,keil不可以,說明至少你的C語言部分的代碼還是正確的,那麼錯誤可能出現在啟動代碼這部分上.將C語言代碼剝離出來,使用keil自帶的啟動代碼(根據自己的需要可能要修改)重新編譯,應該回是可以的.
Ⅳ 在ADS下編程遇到的問題,高手幫小弟解決下
你應該把定義放到.c文件去,這里.h文件全部使用聲明,最好帶上extern。
比如:
/*udisk.c file*/
#include "udisk.h"
SETUPPKG usbDevSetup;
unsigned char usbBuf[USB_BUF_SIZE];
short usbTimer = 0;
s3c2410_ohci_TD genTd[4];
s3c2410_ohci_ED controlEd;
s3c2410_ohci_ED bulkEd[2];
//分配HCCA空間
s3c2410_ohci_HCCA hcca;
USB_DEVICE_INFO usbDevInfo;
ENUM_DEV enumDev;
USB_CMD_STATE usbCmdState;
DEVICE_INFO usbDeviceInfo;
//ohci寄存器
struct ohci_regs* pUHP = (ohci_regs* )REGS_BASSADDRESS;
UFI_CMD_RUNNING ufiCmdRunning;
/*udisk.h*/
#ifndef __UDISK_H_ZW__
#define __UDISK_H_ZW__
extern SETUPPKG usbDevSetup;
extern unsigned char usbBuf[USB_BUF_SIZE];
extern short usbTimer;
extern s3c2410_ohci_TD genTd[4];
extern s3c2410_ohci_ED controlEd;
extern s3c2410_ohci_ED bulkEd[2];
//分配HCCA空間
extern s3c2410_ohci_HCCA hcca;
extern USB_DEVICE_INFO usbDevInfo;
extern ENUM_DEV enumDev;
extern USB_CMD_STATE usbCmdState;
extern DEVICE_INFO usbDeviceInfo;
//ohci寄存器
extern struct ohci_regs* pUHP;
extern UFI_CMD_RUNNING ufiCmdRunning;
#endif
注意:頭文件中不需要對變數賦初值,實現文件再賦初值
Ⅵ ARM9為什麼要用ADS編譯器呢
網上有人做過測試,同樣的代碼,在ADS、IAR和KEIL中進行編譯,keil的效率最好。此外,由於ARM將keil收購,keil的應用更為廣泛,推薦使用Keil,尤其是以前做過C51的,更容易上手。