直播推薦
企業(yè)動態(tài)
- 上海兆越打造智能化IDC能源系統(tǒng)網(wǎng)絡(luò)方案
- 華為協(xié)同產(chǎn)業(yè)伙伴參與編寫《工業(yè)制造企業(yè)千兆光網(wǎng)建設(shè)指南研究報告(2024)》
- 首赴華南工博會,歐姆龍以“超越人的自動化“ 創(chuàng)新力量加速制造業(yè)質(zhì)效雙升
- 數(shù)智破局·生態(tài)共生:重構(gòu)全球制造新引擎
- 廣東某光電企業(yè)引進(jìn)東莞市皓天試驗(yàn)設(shè)備有限公司紫外老化試驗(yàn)箱
- 東莞市皓天非標(biāo)定制恒溫恒濕試驗(yàn)箱及老化箱成功交付廣東某電子科技企業(yè)
- 長沙老化房完工并順利通過第三方檢測合格!
- 臭氧老化試驗(yàn)的靜動態(tài)博弈:從橡膠龜裂機(jī)理到工業(yè)場景的失效預(yù)警
推薦展會
主要型號有:in 80186/188, 80186/188ea, 80186/188eb, 80186/188ec, 80386ex ……, in的站點(diǎn)。
amd 80186/188,80186/188ed,80186/188em,80186/188es,elan300,elan400,zui近還推出了用于網(wǎng)絡(luò)的80186/188ch,型號我記不清了,有興趣的可以到去找。
比較而言我自己覺得amd的產(chǎn)品要好一些,設(shè)計簡單,提供的外部資源(時器、中斷控制器、i/o口、地址譯碼、dma控制器、dram控制器……)要多一些,另外elan300,elan400簡直就是一臺個人計算機(jī),它集成了pc機(jī)除了dram和磁盤控制器之外幾乎所有的電路(把lcd顯示器接口也集成到里面了,包括rtm,tmr,int controller,dma,dram controller,sio,keyboard……)。若用diskonchip作為硬盤的話加上dram,lcd顯示器,鍵盤,網(wǎng)卡就是一臺pc機(jī)了。
為了適應(yīng)工業(yè)領(lǐng)域的應(yīng)用,簡化用戶的開發(fā)難度,in和amd兩大公司推出了自己各有特色的產(chǎn)品,特別值得一提的是amd公司的產(chǎn)品,應(yīng)用起來特別是硬件設(shè)計非常簡單,但amd公司沒有推出象 in appbuilder一樣的工具,編程還是要困難一點(diǎn)。另外x86系列的一個缺點(diǎn)就是仿真器非常昂貴,我們可以在pc機(jī)上作軟件調(diào)試,編譯器用 msc,tc,bc 均可。但生成的是 .exe 文件需要操作系統(tǒng)加載運(yùn)行,無法寫入rom里,我們需要一個定位工具,把 .exe 文件的重定位段定位.另外由于沒有了操作系統(tǒng)的支持,所以需要重寫 c 語言的啟動文件,在tc下有一個 c0x.obj的文件(x=t,s,m,l,h為tiny, small, medium, large,huge模式,對應(yīng)的有一個c0.asm的匯編源程序),完成 c 語言的初始化,設(shè)置堆棧,與操作系統(tǒng)接口……,我們重寫 c 語言的啟動文件就是重寫c0.asm. 當(dāng)然若能買一個嵌入實(shí)時操作系統(tǒng)就不要這樣麻煩了,可悲的是嵌入實(shí)時操作系統(tǒng)太貴,也有免費(fèi)的,或者學(xué)習(xí)起來太難,因?yàn)闆]有資料,用戶又太少。
--------------------------------------------------------------------------------
本人在用80c188eb開發(fā)過一個通訊控制器,配有8個串口,其中有兩個為同步/異步,6個異步。配有512k rom,512k ram,rtm,8k串行eeprom。用tc作開發(fā)工具,除了應(yīng)用程序外,主要的難點(diǎn)在于:c語言的啟動代碼;定位工具;串行eeprom的接口庫。這里僅介紹c語言的啟動代碼。
本來,各種c語言編譯器都提供啟動代碼,以x86為例,無論是tc、msc、bc都有。tc在不同模式下啟動代碼不一樣,為c0x.obj.一般編程,用不著去修改啟動代碼。但有的場合就有必要了。筆者為一套系統(tǒng)開發(fā)軟件時發(fā)現(xiàn):一套系統(tǒng)當(dāng)沒有操作系統(tǒng)時,要想使得系統(tǒng)正常運(yùn)行是相當(dāng)困難的。筆者開發(fā)的系統(tǒng)cpu為80c188eb,無操作系統(tǒng),開發(fā)工具為tc2.0。為了能使得系統(tǒng)運(yùn)行,又不能用太低級的語言如匯編,可謂歷盡辛苦(當(dāng)然可以買現(xiàn)成的開發(fā)工具和仿真工具,太貴)。
筆者重寫了tc的啟動代碼,另外還改寫了一個重定位工具(把exe文件變?yōu)榭芍苯訉懭雛om去的文件)。因?yàn)楹苌僖姷筋愃莆恼隆O旅姘阎饕獌?nèi)容寫出來,以饗讀者。以后我準(zhǔn)備把這個工具完善以下,做成一個重新定位的工具。
c語言的啟動代碼如下:
; tcstart.asm
; for d000 code only, external eprom on memory card
; for pc rom
extrn _main:far;
/* 說明外部的c語言的main() 函數(shù),這也是 c 語言為什么非要從main()開始的原因 */
_text segment byte public "code" ; /* c語言生成的代碼段 */
_text ends
_textend segment para public "codeend"; /* 代碼段的結(jié)束段 */
_textend ends
_data segment para public "data"; /* c語言生成的初始化數(shù)據(jù)段 */
_data ends
_dataend segment para public "dataend"; /* 初始化數(shù)據(jù)段的結(jié)束段 */
_dataend ends
_bss segment para public "bss" ;/* c語言生成的非初始化數(shù)據(jù)段 */
_bss ends
_bssend segment byte public "bssend";/* c語言生成的非初始化數(shù)據(jù)結(jié)束段 */
_bssend ends
_stack segment para stack "stack" ; /* 堆棧段 */
_stack ends
dgroup group _data, _dataend, _bss, _bssend /* 把數(shù)據(jù)的段構(gòu)成一個組,代碼連在一起 */
cgroup group _text, _textend /* 把代碼的段構(gòu)成一個組,代碼連在一起 */
_text segment ; /* 代碼段 */
assume cs:cgroup, ds:dgroup, es:dgroup, ss:_stack
start: cli ; disable interrupts
mov ax, _stack ; initialise stack
mov ss, ax
mov ax, offset stackend
mov sp, ax
mov ax, seg _bss ; /* bss seg clear */
mov es, ax
mov cx, offset dgroup:endbss
mov di, 0
mov ax, 0
rep stosb ; write to es:di
mov ax, seg dgroup ;初始化數(shù)據(jù)段
mov es, ax ; point es to _data
mov cx, offset dgroup:enddata
mov si, 0
mov di, 0
assume ds:cgroup
mov ax, seg _textend:codeend
inc ax
mov ds, ax ; point ds to _const
rep movsb ; copy _const to _data
push es ; point ds to _data
pop ds
;下面內(nèi)容非pc 機(jī)可以不要
mov al, 80h ; enable nmi
out 0a0h, al
mov al, 0bch ; enable 8259 pic 1011-1100 (irq0,1,6 enabled)
out 21h, al
;上面內(nèi)容非pc 機(jī)可以不要
sti ; enable interrupts
call _main ; call c main()
jmp start ;
_text ends
_textend segment
public codeend
db 16 dup(?) ; a paragraph, thus _const is one byte more
codeend label byte
_textend ends
_stack segment
db 1024 dup ("stack");/* 預(yù)留的堆棧空間 */
stackend label word
_stack ends
_bssend segment
public endbss
endbss label byte
_bssend ends
_dataend segment
public enddata
enddata label byte
_dataend ends
end
編譯連接:
tasm /mx tcstart
bcc -a- -c -f- -g- -k -b -ml -m -n- -o- -r- -v- -y- -z- -s -o- 1.c
tlink /m tcstart 1 tclib, 1, 1
locate 1; locate 工具,本人無源代碼。
免責(zé)聲明
- 凡本網(wǎng)注明"來源:智能制造網(wǎng)"的所有作品,版權(quán)均屬于智能制造網(wǎng),轉(zhuǎn)載請必須注明智能制造網(wǎng),http://www.xashilian.com。違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
- 企業(yè)發(fā)布的公司新聞、技術(shù)文章、資料下載等內(nèi)容,如涉及侵權(quán)、違規(guī)遭投訴的,一律由發(fā)布企業(yè)自行承擔(dān)責(zé)任,本網(wǎng)有權(quán)刪除內(nèi)容并追溯責(zé)任。
- 本網(wǎng)轉(zhuǎn)載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品來源,并自負(fù)版權(quán)等法律責(zé)任。
- 如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
2025長三角國際智能儀表/線纜產(chǎn)業(yè)博覽會
展會城市:滁州市展會時間:2025-11-11