ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
1 мая
69915 Топик полностью
Сергей Борщ (23.09.2006 19:38, просмотров: 1) ответил PAL на Посмотрите там IBPv11_.rar плиз
Мда, похоже никто не хочет присоединиться. Отдуваюсь 1) Project->Options->General options->Target. Выбери не Core а Device и в меню выбери свой проц. 2) Project->Options->C/C++ Compiler->List Поставь галочки Output list file и assembler mnemonics 3) Project->Options->Assembler->List Поставь галочку Output list file, остальные можно оставить по умолчанию 4) Project->Options->Linker->Output Сними галочку с Override default, пусть он сам генерит файл какой ему нужен для C-Spy. Если будешь пользоваться внутрисхемной отладкой и прошивкой через JTAG (Wiggler, J-Link/MT-Link), то поставь галочку Allow C-Spy specific extra output file и на вкладке Extra output галочку Generate extra output file, а в списке выбери формат simple-code. Если нужно будет получать Intel-HEX для заливки через bootloader, то выберешь его здесь или на вкладке extra options напишешь -Ointel-extended,(CODE)=.hex 5) Project->Options->Linker->List Поставь галочку Generate linker listing и segment map. В конце файла .map в директории Debug\List сможешь посмотреть в какие адреса что попало. 6) В порядке "шлифовки" - укажи путь к .xcl как $PROJ_DIR$\имя_файла. Тогда при переносе проекта в другую папку не придется править путь в этом месте. И лучше держать его (.xcl) в корне проекта а не в папке settings (она является служебной папкой ИАРа и черт его знает что он с ней делает). 7) Не знаю, где ты взял этот .xcl, но в нем не определен сегмент DATA_C зато определены HUGE_x, которые ARMу по идее не нужны. Замени HUGE_ на DATA_. 8) #include "iolpc2119.h" лучше писать как #include <iolpc2119.h>, тогда файл будет подключаться из \IAR\ARM\INC и не нужно будет его таскать с пректом. 9) Не нужно делать IO0SET|=(1UL<<SCLK), достаточно IO0SET = (1UL<<SCLK); оно делает "или" само внутри процессора. 10) и выкини lpc210x_evb_cstartup.s79 из проекта. После выполнения этих операций у меня все скомпилилось и судя по .map расположилось в правильные адреса. Обрати внимание на warnings при компиляции - их быть не должно, возможно большинство проблем из-за них. Еще глянул другие части программы: if (++tx_rd_index0 == TX_BUFFER_SIZE0) tx_rd_index0=0; Если сделаешь размер буфера равным степени двойки, то будет оптимальнее: tx_rd_index0 = ++tx_rd_index0 & (TX_BUFFER_SIZE0 - 1); tx_counter0 и rx_counter0 должны быть volatile. И еще непонятно зачем ты все файлы включил в один, почему не используешь отдельные модули?