16+
Среда
18 июля
Вход |Карта сайта | |Upload |codebook | PARTS

 О смысле всего сущего 0xFF

 Средства и методы разработки

 Мобильная и беспроводная связь

 Блошиный рынок Объявления

caxapa

Микроконтроллеры ARM 

AVR PIC MSP PLD,FPGA,DSP 

Кибернетика Технологии 

Схемы, платы, компоненты 

Микроконтроллеры

 
   Новая тема Правила Регистрация Поиск »» Архив
Вернуться в конференциюТопик полностью
sladkoejka  (29.06.2018 11:55 - 02.07.2018 18:42, просмотров: 9490)
IAR 8051 10.10.1 глючный компилятор (int и long типы, printf) для Cypress CY7C68013A 
Не могу понять в чём дело. Помогите. Пытаюсь скомпилировать тестовый пример для Cypress CY7C68013A. Поставил IAR 8051 10.10.1 (брал с официального сайта), создал пустой проект на си. Выбрал таржет CY7C68013A (впрочем без этого тоже самое). Code model: Near Data model: Small Все другие варианты Code model/Data model приводят к ошибкам отсутствия файла в либах либо вообще портят проект какими-то окнами про отустутствующие параметры командной строки для симулятора. В чём собственно проблемы: 1) попытка вывести какое-то число в printf приводит к кракозяблам, например
printf("sizeof(int) = %i\r\n", sizeof(int)) 
выводит:
s$	eof(int) = 
Если убрать аргумент и выводить только текст, то печатает нормально. 2)Какие-то странные баги с типами long и int. Например вот код мигания светодиодами (PA0 и PA1):
#include <stdbool.h>
#include <stdio.h>
#include <ioCY7C68013A.h>

typedef unsigned int uint16_t;
typedef signed int int16_t;


void delay(uint16_t n)
{
    for (uint16_t i=0; i < n; i++) asm("nop");
}
 
void main()
{
    SOEA = 0x03;    //Enable Port A Pins: 0, 1
    while (true)
    {
        IOA = 0x01;
        delay(10000);
        IOA = 0x02;
        delay(10000);
        IOA = 0x00;
        delay(10000);
    }
}
достаточно заменить в функции delay uint16_t на int16_t и один светодиод перестаёт мигать... Какой-то бред... как такое может быть? Дополнено, для тех кто тоже столкнётся с этим: 1) %i не работает, но printf поддерживает %d - это полный аналог %i 2) глюки и зависания по всей видимости связаны с autovector фичей. Компилятор помещает код в таблицу векторов и он там глючит (даже при отсутствии прерываний). По всей видимости ljmp в этой области обрабатывается как autovector и перход происходит на новую таблицу, которой нет. Вот тут я сделал костыли для обхода этой проблемы: caxapa.ru/852440.html
 [x][x][x][x][x][x] [x][x][x][x][x][x][x][x]

Тема выделяется по переводу строки или автоматом

 

Имя


Регистрация позволит вам редактировать и перемещать ваши сообщения и прикреплять к ним файлы.
 
Символы: á é ó ú ý « »
Главная | Карта сайта | О проекте | Проекты | Файлообменник | Регистрация | Вебмастер | RSS
Лето 7526 от сотворения мира. При использовании материалов сайта ссылка на caxapу обязательна.
MMI © MMXVIII