From: Kim L. <lu...@di...> - 2005-11-22 15:38:10
|
I'd like to look at porting sdcc to a new target. Is there a "How To" document somewhere ? How does one subscribe to the sdcc-devel list ? Thanks. -- Kim Lux, Diesel Research Inc. |
From: Tom <to...@im...> - 2005-11-24 08:35:17
|
Hi, DS80C390 by default after reset starts in 8051 mode. Initialization procedure must switch processor into 80390 using the sequence below. MOV TA,#0xAA ; Enable Access MOV TA,#0x55 ; Enable Access MOV ACON,#0x2 ; Switch to 16 MB of CODE How can I do this using SDCC? I see that SDCC always inserts the following sequence 529 ;-------------------------------------------------------- 530 .area HOME (CODE) 0000 531 __interrupt_vect: 0000 01 00 83 532 ajmp __reset_vect ... 0083 565 __reset_vect: 0083 02 00 00 87 566 ljmp __sdcc_gsinit_startup .... 0087 574 __sdcc_gsinit_startup: 0087 75 81 20 575 mov sp,#__start__stack - 1 008A 12 00 00 CF 576 lcall __sdcc_external_startup It never works because AJMP, LJMP are compiled as 80390 mode (3, 4 bytes) but it should be as 8051 (2, 3 bytes), and the mentioned switch sequence should be inserted. Obviously it cannot be inserted inside __sdcc_gsinit_startup Because we never reach it because of mentioned problem. So are we in loop?? How is it done in SDCC when ds390 mode is used? Thanks. |