реклама на сайте
подробности

 
 
> IAR настройки линкера, Как сделать чтобы линкер не вставлял библиотечные модули
shrek
сообщение Aug 15 2010, 17:14
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 125
Регистрация: 1-12-08
Из: г. Орел
Пользователь №: 42 126



Добрый Вечер. Спасибо за помощь в аналогичной теме...
http://electronix.ru/forum/index.php?showtopic=79333
(Думаю если тему поменять может что то изменится...)
С ИАРом знаком давно, но глубоко не разбирался.
В ИАР АРМ версия 4.42 (в которой работаю) проблем особых не возникало. В частности когда ставишь галочку Defined by application в настройках линкера свои модули типа __low_level_init или __low_level_call_init компилятор не вставляет. В дисассемблере только код моего стартапа и скомпилированный код сишных файлов.
Создал пример в компиляторе IAR MCS-51 7.51A (в IAR MCS-51 7.60.1 в принципе таже лажа).
Хотелось бы чтобы он не вставлял свои "__low_level_init" и прочее (в симуляторе в код модулей компилятор не переходит...)... В настройках линкера поставил глалочку Defined by application.
Написал свой стартап сделал простенькую функцию в main.
настройки general
Device nRF24LE1
CPU core Plain
Code model Near
Data model Small

асемблерный стартап
Код
#include "ionRF24LE1.h"
//------------------------------------------------------------------------------
        PROGRAM start
//------------------------------------------------------------------------------
        RSEG   CODE


        EXTERN main
        PUBLIC reset
reset:        
        ljmp   init
//------Инициализация-----------------------------------------------------------
init:
        MOV    PSW,#0x00
        MOV    SP,#0xBF
        lcall  main
exit:  
        ljmp   exit
//------------------------------------------------------------------------------
        END


и собственно функция

Код
unsigned char d;

unsigned char summa(unsigned char a, unsigned char b, unsigned char c)
     {
     return a+b+c;
     }

void main()
     {
     d = summa(10,20,30);
     }


Без переменых только код ничего лишнего... обьявляю переменные в конце кода компилятор вставляет "__low_level_init" и прочее, которые никогда не используются!...
Отключал библиотеку CLIB в настройках без переменных проект собирается и с локальными переменными собирается, обьявляешь внешнюю переменную начинает ругаться:
Error[e46]: Undefined external "__INIT_IDATA_Z" referred in main ( D:\IAR projects\8051\test_asm\Debug\Obj\main.r51 )
Еще вечная ругня компилятора по поводу что ему не хватает стека при компиляции и в симуляторе.
Если есть возможность укажите что надо сделать, что почитать))) ломаю голову целую неделю... smile3046.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
shrek
сообщение Sep 1 2010, 04:02
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 125
Регистрация: 1-12-08
Из: г. Орел
Пользователь №: 42 126



Вчера заметил один глюк... (IAR MCS-51 V7.51)
Собрал проект, скомпилил, попробовал в симуляторе все вроде нормально. (галка стояла на оптимизации Low)
Прошиваю чип... не работает...
Должен раз в секунду мигать светодиодом по команде запуска, проверял генераторы, так как встроенный часовой RC генератор давал ощутимую погрешность, а имеется необходимость достаточно точно время отсчитывать. А иначе получится несогласование работы передатчиков.
Поставил галку на None...
Скомпилил, попробовал в симуляторе все вроде норм. Прошиваю чип не работает.
Поставил галку на Medium...
Скомпилил, попробовал в симуляторе все вроде норм. Прошиваю чип работает.
Поставил галку на High (Balanced)...
Скомпилил, попробовал в симуляторе все вроде норм. Прошиваю чип работает.
Код
#include "ionRF24LE1.h"
#include "rf_transceiver.h"

void delay(unsigned int j) {while (--j > 0);}

const unsigned char address[5] = {0xC3, 0xC3, 0xC3, 0xC3, 0xC3};
unsigned char buffer[5];

void main()
     {
     unsigned char i;
//------------------------------------------------------------------------------
     DIS_RF;
//---CONFIG---------------------------------------------------------------------
     rf_power_down();
     rf_crc_mode(CRC_8BIT);                    //CRC 8 бит
     rf_dis_irq(ALL_IRQ);                      //Выключаем все прерывания
     rf_en_irq(RX_DR);                         //Включаем прерывание по приему
     rf_prx_mode();                            //устанавливаем приоритетный режим передачи данных
//---EN_AA----------------------------------------------------------------------
     rf_dis_aa(ALL_PIPE);                      //выключаем Enhanced ShockBurst для всех каналов
//---EN_RXADDR------------------------------------------------------------------
     rf_dis_rxaddr(ALL_PIPE);                  //выключаем адреса для всех каналов
     rf_en_rxaddr(PIPE_0);                     //включаем адрес для канала 0
//---SETUP_AW-------------------------------------------------------------------
     rf_setup_aw(AW_5BYTES);                   //устанавливаем ширину адреса в 5 байт
//---SETUP_RETR-----------------------------------------------------------------
     rf_write_reg(SETUP_RETR, 0x00);           //устанавливаем счетчик авторетрансляции в 0
//---RF_CH----------------------------------------------------------------------
     rf_set_channel(0x3);                      //устанавливаем частотный канал 3
//---RF_SETUP-------------------------------------------------------------------
     rf_set_rate(RATE_250KBPS);                //устанавливаем битрейт 250 кбит/с
//------------------------------------------------------------------------------
     i = 5;
     while (i--) buffer[i] = address[i];
     rf_write_multibyte_reg(RX_ADDR_P0, buffer, 5); //устанавливаем адрес канала 0 для приема
//---RX_PW_P0-------------------------------------------------------------------
     rf_write_reg(RX_PW_P0, 4);                //устанавливаем фиксированное число байт приема канала 0
//---DYNPD----------------------------------------------------------------------
     rf_dis_dynpd(ALL_PIPE);                   //выключаем динамическую длинну данных для всех каналов
//---FEATURE--------------------------------------------------------------------
     rf_write_reg(FEATURE, 0x00);              //выключаем все прочие функции
//---CONFIG---------------------------------------------------------------------
     rf_power_up();                            //переводим в режим stantby-I
     delay (200);
     //RTC2CON = Comp_res | RTC2_en;
     IEN1 = RF_int | Tick_int;                 //прерывание от RF
     T2CON = 0;
     IEN0 = En_all_int;
     EN_RF;
//------------------------------------------------------------------------------
     while(1);
     }

Опытным путем установил что чип останавливается или уходит в ребут или в бесконечном цикле на
Код
i = 5;
     while (i--) buffer[i] = address[i];

или
Код
rf_write_multibyte_reg(RX_ADDR_P0, buffer, 5);


Сообщение отредактировал shrek - Sep 1 2010, 04:09
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- shrek   IAR настройки линкера   Aug 15 2010, 17:14
- - zltigo   QUOTE Если есть возможность укажите что надо сдела...   Aug 15 2010, 17:27
- - shrek   ЦитатаAdmin: Устное замечание за нарушение правил ...   Aug 15 2010, 17:43
|- - Микрюков Вячеслав   Цитата(shrek @ Aug 15 2010, 21:43) (может...   Aug 28 2010, 06:08
- - shrek   Только что попробывал разные варианты обьявления п...   Aug 16 2010, 09:03
|- - Микрюков Вячеслав   Цитата(shrek @ Aug 16 2010, 13:03) Только...   Aug 25 2010, 10:09
- - shrek   "Главный" купил кит я через него и затал...   Aug 27 2010, 03:34
|- - Микрюков Вячеслав   Спасибо за поддержку, мне сейчас всё интересно на ...   Aug 28 2010, 04:53
- - shrek   ЦитатаЭто заявление настораживает, мне что пришлют...   Aug 29 2010, 06:23
|- - MrYuran   Цитата(shrek @ Sep 1 2010, 08:02) Опытным...   Sep 1 2010, 04:57
- - shrek   Хотя в симуляторе и та и та работает))))   Sep 1 2010, 16:59
|- - Микрюков Вячеслав   Установил IAR EW8051-751A, файл "ionRF24LE1...   Sep 2 2010, 09:27
|- - Палыч   Цитата(Микрюков Вячеслав @ Sep 2 2010, 13...   Sep 2 2010, 11:38
|- - demiurg_spb   Цитата(Палыч @ Sep 2 2010, 15:38) Всегда ...   Sep 2 2010, 13:18
|- - Микрюков Вячеслав   Цитата(Палыч @ Sep 2 2010, 15:38) Всегда ...   Sep 3 2010, 10:58
|- - Палыч   Цитата(Микрюков Вячеслав @ Sep 3 2010, 14...   Sep 3 2010, 14:29
|- - Микрюков Вячеслав   Цитата(Палыч @ Sep 3 2010, 18:29) Для Ваш...   Sep 11 2010, 16:39
|- - Палыч   Цитата(Микрюков Вячеслав @ Sep 11 2010, 20...   Sep 12 2010, 10:44
- - shrek   Ну если есть кит от nRF, то на оффсайте можно прог...   Sep 2 2010, 10:13
- - shrek   ЦитатаСила привычки видимо. Другое объяснение тут ...   Sep 3 2010, 05:00


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 10:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.01387 секунд с 7
ELECTRONIX ©2004-2016