|
SDCC |
|
|
|
Aug 11 2008, 13:06
|
Гуру
     
Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923

|
Сейчас пишу програмку для мк 89с51ed2, память у него конфигурируется в регистре AUXR и может быть 768 1024 1792. Когда писал программу под KEIL там был файл Startup.asm в нем после метки Startup: можно было настроить все что нужно. В SDCC файл есть main.asm но если в него добавить что то то, после компиляции все равно будет сгенерирован новый main.asm а этот заменяется. на сайте sdcc есть что то по настройке, startup http://sdcc.sourceforge.net/doc/sdccman.html/node78.htmlно что то мне это не чего не говорит, может кому приходилось это настраивать, помоги настроить пожалуйста.
|
|
|
|
|
 |
Ответов
|
Aug 20 2008, 13:25
|
Гуру
     
Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923

|
Информацию по make и makefile, прочел вроде понятно. Вот что в доке написано, вроде так и делаю. Цитата While these initialization modules are meant as generic startup code there might be the need for customization. Let’s assume the return value of _sdcc_external_startup() in crtstart.asm should not be checked (or _sdcc_external_startup() should not be called at all). The recommended way would be to copy crtstart.asm (f.e. from http://sdcc.svn.sourceforge.net/viewvc/*ch...vice/lib/mcs51/crtstart.asm) into the source directory, adapt it there, then assemble it with asx8051 -plosgff 4 crtstart.asm and when linking your project explicitely specify crtstart.rel. As a bonus a listing of the relocated object file crtstart.rst is generated. Вот makefile : Код CC=sdcc AS=asx8051 LINKFLAGS=--model-large --code-loc 0x0000 --code-size 0xFFFF --xram-loc 0x0000 --xram-size 0x0700 all: main.hex main.rel: main.c $(CC) $(LINKFLAGS) -c main.c
crtstart.rel: crtstart.asm $(AS) -plosgff crtstart.asm
main.hex: main.rel crtstart.rel $(CC) $(LINKFLAGS) main.rel crtstart.rel packihx <main.ihx>main.hex
clean:
@del *.hex *.ihx *.lnk *.mem *.rel *.rst *.sym *.lst *.map Все компилится получается хекс, но только просматриваю сгенерированный файл main.asm он должен получится из двух объектных файлов main.rel crtstart.rel а там только от main.rel может что не так сделал в макефайле ?
Сообщение отредактировал sergey sva - Aug 20 2008, 13:44
Прикрепленные файлы
asm.zip ( 14.16 килобайт )
Кол-во скачиваний: 33
|
|
|
|
|
Aug 20 2008, 16:39
|
Гуру
     
Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923

|
Цитата(AHTOXA @ Aug 20 2008, 20:07)  Из main.c генерится main.asm, потом он транслируется в main.rel. А crtstart - он уже и так .asm, потому из него делается сразу crtstart.rel. Понятно.  Еще есть проблемка в crtstart.asm Есть строка mov 0x8e , #0x10. Записываю в регистр 0x8e значение 0x10.(Во время инициализации) После в программе вывожу на дисплей значение этого регистра, содержание его 0x80 вместо 0x10. функция которая выводит на дисплей работает нормально, проверял. Сегодня целый день провозился уже не знаю где искать. Может что в hex можно увидеть.
Прикрепленные файлы
hex.zip ( 7.72 килобайт )
Кол-во скачиваний: 42
|
|
|
|
|
Aug 21 2008, 13:15
|
Гуру
     
Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923

|
Цитата(AHTOXA @ Aug 20 2008, 22:45)  А что это за регистр такой? Регистр AUXR в нем настраивается размер памяти XRAM 256 512 768 1024 или 1792. Сегодня с утра посмотрел на код и сразу дошло, что на дисплее информация int а 0х10 это hex, еще в этом регистре есть бит который зарезервирован и читается как 1; поэтому записываю 0х10 а получается 0х50. Но проблема еще не решена, просто я не там искал. Проблема вот какая: если размер XRAM превышает 256,байт , то программа зависает. На самом деле должна работать до 1792. отрывок из документации в зипе. makefile Код CC=sdcc AS=asx8051 LINKFLAGS=--model-large --code-loc 0x0000 --code-size 0xFFFF --xram-loc 0x0000 --xram-size 0x0700 all: main.hex main.rel: main.c $(CC) $(LINKFLAGS) -c main.c
crtstart.rel: crtstart.asm $(AS) -plosgff crtstart.asm
main.hex: main.rel crtstart.rel $(CC) $(LINKFLAGS) main.rel crtstart.rel packihx <main.ihx>main.hex
clean:
@del *.hex *.ihx *.lnk *.mem *.rel *.rst *.sym *.lst *.map main.mem Код Internal RAM layout: 0 1 2 3 4 5 6 7 8 9 A B C D E F 0x00:|0|0|0|0|0|0|0|0|a|b|b|b|b|b|b|Q| 0x10:|Q|Q| | | | | | | | | | | | | | | 0x20:|B|B|S|S|S|S|S|S|S|S|S|S|S|S|S|S| 0x30:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S| 0x40:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S| 0x50:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S| 0x60:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S| 0x70:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S| 0x80:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S| 0x90:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S| 0xa0:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S| 0xb0:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S| 0xc0:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S| 0xd0:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S| 0xe0:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S| 0xf0:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S| 0-3:Reg Banks, T:Bit regs, a-z:Data, B:Bits, Q:Overlay, I:iData, S:Stack, A:Absolute
Stack starts at: 0x22 (sp set to 0x21) with 222 bytes available.
Other memory: Name Start End Size Max ---------------- -------- -------- -------- -------- PAGED EXT. RAM 0 256 EXTERNAL RAM 0x0000 0x0151 338 1792 ROM/EPROM/FLASH 0x0000 0x1dd6 7639 65535
Прикрепленные файлы
Doc1.zip ( 308.24 килобайт )
Кол-во скачиваний: 64
|
|
|
|
|
Aug 25 2008, 06:49
|
Частый гость
 
Группа: Участник
Сообщений: 99
Регистрация: 22-03-07
Из: Novosibirsk
Пользователь №: 26 415

|
В документации на sdcc написано, что _sdcc_external_startup(), о которой писал AHTOXA, как раз и предназначена для инициализации памяти. Если это можно сделать на Си, зачем писать на ассемблере? Код int _sdcc_external_startup(void) { AUXR = XRS2; return 0; } Цитата Проблема вот какая: если размер XRAM превышает 256,байт , то программа зависает. До main доходит, или раньше зависает?
|
|
|
|
Сообщений в этой теме
sergey sva SDCC Aug 11 2008, 13:06 AHTOXA Там же в конце написано:
ЦитатаThe recommended way... Aug 11 2008, 13:47 sergey sva скопировал crtasm.asm в директорию source, добав... Aug 11 2008, 15:01 AHTOXA Цитата(sergey sva @ Aug 11 2008, 21:01) В... Aug 11 2008, 16:05  sergey sva Цитата(AHTOXA @ Aug 11 2008, 20:05) Вы та... Aug 11 2008, 16:12 _Pasha Господа!
Если кому не в напряг, выложите, пожа... Oct 28 2008, 06:50 gotty Цитата(_Pasha @ Oct 28 2008, 08:50) Госпо... Oct 28 2008, 08:01  _Pasha Цитата(gotty @ Oct 28 2008, 11:01) Что мо... Oct 28 2008, 09:50   gotty Цитата(_Pasha @ Oct 28 2008, 11:50) У мен... Oct 28 2008, 11:06    _Pasha Цитата(gotty @ Oct 28 2008, 14:06) А може... Oct 28 2008, 12:48     Сергей Борщ Цитата(_Pasha @ Oct 28 2008, 15:48) Я вкл... Oct 28 2008, 12:54      gotty У меня складывается впечатление что MPLAB не испол... Oct 28 2008, 13:45      _Pasha Цитата(Сергей Борщ @ Oct 28 2008, 15:54) ... Oct 28 2008, 14:20   Сергей Борщ Цитата(_Pasha @ Oct 28 2008, 12:50) Короч... Oct 28 2008, 12:10
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|