Перейти к содержанию
    

Intel4004

Участник
  • Постов

    102
  • Зарегистрирован

  • Посещение

Репутация

2 Обычный

Информация о Intel4004

  • Звание
    Частый гость
    Частый гость
  • День рождения 06.11.1973

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Посетители профиля

3 046 просмотров профиля
  1. 1. Найти, скачать и установить Arm Compiler V5 (файл называется ARMCompiler_506_Windows_x86_b960.zip), валяется много где. 2. Подключить этот компилятор к Кейлу (тыц сюда).
  2. Насколько я понимаю, там узкое место не в шлейфе, а в ласточкином хвосте, на который шлейф накалывают. Причем узкое место как по току, так и по механическим нагрузкам. Для одноразовой шабашки (сдать, получить деньги и быстро убежать) пойдет, для серийной продукции, которая работает годами - я бы не рискнул.
  3. Код, который привел я в полный рост используется при рассчете CRC ZIP-файлов. Он рабочий. Рассчет CRC и таблица совпадают с тем, что нужно вам, соответственно рассчет таблицы тоже совпадает. Таблица у меня считается по полиному 0xEDB88320. 0xEDB88320 - это инвертированный полином 0x04C11DB7. Т.ч. вашему IARу подойдет или полином 0x04C11DB7 (если он сам умеет его инвертировать), или 0xEDB88320 (если не умеет). Код из первого поста и тот, что привел я - это полином 0x04C11DB7, преобразованный в 0xEDB88320, и, соответственно, рассчет CRC адаптирован под это преобразование. Тот код, где сдвиги не в ту сторону - это полином 0x04C11DB7, преобразованный в 0x82608EDB, и, соответственно, рассчет CRC адаптирован под это преобразование. В преобразованиях полиномов я не разбираюсь, поэтому подробнее не расскажу.
  4. Не понимаю. Возможно это рассчет CRC в big-endian. Вот рабочий, проверенный код (рассчет таблицы и CRC32 по таблице):
  5. Сгенерил таблицу, сравнил с вашей. Это самый ходовой полином для CRC32. Собственно, других я и не встречал. 0x04C11DB7, он же инвертированный 0xEDB88320
  6. Ясно. Значит простым путем не получилось... МК любой. От атмела до гигадевайса. Включая нордики, у которых для работы с их софтдевайсом IROM1 и IRAM1 начинаются совсем не там, где ожидается и имеют совсем не тот размер 🙂
  7. Нет, для этого требуется правка scatter. Надо в свежесозданном проекте, просто подключив к проекту один сишный исходник и не внося больше никаких изменений (типа редактирования свойств проекта, scatter, или дефайнов), получить в этом исходнике размер и адрес физически существующей, но неиспользуемой памяти. А с этого момента, пожалуйста, поподробнее. Оно из сишного исходника, без редактирования sct осуществимо?
  8. Собственно subj. Размер используемой памяти узнать - не проблема. Максимальное из Image$RW_IRAM1$*$Limit - это оно и есть. Но как узнать общий размер IRAM1, указанный в свойствах проекта?
  9. И сам же отвечаю: DBG_CTL0 |= DBG_CTL0_TRACE_IOEN; или, если на GD32 натянуть описание регистров от STM32: DBGMCU->CR |= DBGMCU_CR_TRACE_IOEN_Msk;
  10. Keil, J_Link. Не могу заставить работать TRACESWO. На других процах (atmel, nordic, etc) все прекрасно работает. printf замечательно выводит в окошко "Debug (printf) viewer". На GD32F407 Вешается в ITM_SendChar на while (ITM_PORT0_U32 == 0); Подскажите, что там надо настроить или дописать чтобы оно заработало? И оно вообще там есть?
  11. Делаете из скомпиленного бутлоадера сишный массив и подключаете его к проекту: const unsigned char Bootloader[0xD000] __attribute__((at(0x08000000))) = { ... }; Все. Ваша прошивка содержит в себе бутлоадер.
  12. unsigned char data_0_99 = (data1[4] - 0x30) * 10 + data1[5] - 0x30; unsigned char data_0_255 = (data_0_99*256+100/2)/100; // если 0..100 -> 0..256 unsigned char data_0_255 = (data_0_99*255+99/2)/99; // если 0..99 -> 0..255 В 16 бит вписывается. А со сдвигами лучше пока не заморачиваться, со временем само придет. Компилятор сам *256 превратит в <<8, если оно будет оптимальнее.
  13. typedef struct { int16_t quart; int16_t X //... еще много всякого } DSP_DATAtype1; typedef struct { int8_t Temp; int8_t Bat //... еще много всякого } DSP_DATAtype2; typedef union { DSP_DATAtype1 Data1; DSP_DATAtype2 Data2; } DSP_DATAtype; //Usage: DSP_DATAtype *Data; Data->Data1.quart = 0; Data->Data2.Temp = 1;
×
×
  • Создать...