JohnKorsh
Свой-
Постов
253 -
Зарегистрирован
-
Посещение
Весь контент JohnKorsh
-
Добрый день! Не подскажет ли кто - после установки CCS 6.1.1 при попытке запуска появляется предупреждение Failed to create JAVA Virtual Machine и программа закрывается. Как с этим бороться?
-
Добрый день! Не поможет ли кто в решении проблемы? Зпрограммировали кучу MSP430F1232 с опцией "пережигания" доступа по JTAG. Конечное, понадобилось внести исправления в программу. По-моему возможно программирование MSP430 через его внутренний USART или это "всё", надо перепаивать всю партию?
-
Добрый день! Я использую микроконтроллер EFM32G880F128. Не нашёл в DataSheet как можно 'закрыть' FLASH от считывания. В AVR и PIC просто ставится бит 'закрытия'. В данном случае я такого бита не нашёл. Видимо, плохо искал. Не поможет ли кто?
-
Спасибо. Мы явно недодумали. Надо в интернет посмотреть. И с сантехниками пообщаться.
-
Ну, я думал, что понятно, что трубочка внутри, конструкции, и видна только после разборки изделия. Дырочку под иголку - маленькую, дальше - как фантазия работает - совместить с какой-нибудь дырочкой конструкции (сетка под динамик и т.п.). Конечное, такая защита на один раз, но больше, обычно, и не надо - видно, что пользователь любопытствовал. При сборке - набрали последовательность из цветов шариков, вставили иголку, закрутили изделие, вынули иголку. Шарики "упёрлись" в внутренний элемент конструкции (выступ крышки, например). При разборке этот элемент конструкции "открывает" путь шарикам. Вы, как разработчик, вскрываете предварительно вставив иголку в известное Вам отверстие, она блокирует шарики от выталкивания и рассыпания. Пользователь вскрывает без иголки и шарики рассыпаются. Конечно, не панацея от всего. НО плюс в том, что не требует питания. А насчёт пломб - неужели не делали? - заливаете известным компаундом пломбу, он застывает через час, и потом опечатываете, сколько раз необходимо.
-
Спасибо. "Зпуск от имени Администратра" помог.
-
Попробую описать рабочую кнструкцию. Пластиковая прозрачная трубочка, открытаая с одного конца. С другого - пружинка. В трубочке - цветные шарики. Ну, штук десять. Вы, при окончательной сборке записываете последовательность цветов. Конструкция аппарата такова, что, в открытом состоянии пружинка свободно выталкивает шарики. При сборке и разборке Вами в отверстие конструкции вставляете иглу, перекрывающую шарики. Думаю, идея ясна.
-
Добрый день! Не поможет ли кто разобраться с Atmel Studio 6.1 SP2? При работе под ОС Windows XP всё нормально. При работе под ОС Windows 8 при компиляции любого проекта выдаётся ошибка компиляции. Вот всё, что выдал компилятор: ------ Build started: Project: Test, Configuration: Debug AVR ------ Build started. Project "Test.cppproj" (default targets): Target "PreBuildEvent" skipped, due to false condition; ('$(PreBuildEvent)'!='') was evaluated as (''!=''). Target "CoreBuild" in file "C:\Program Files (x86)\Atmel\Atmel Studio 6.1\Vs\Compiler.targets" from project "F:\My Documents\AWR\w\Test\Test\Test\Test.cppproj" (target "Build" depends on it): Using "RunCompilerTask" task from assembly "C:\Program Files (x86)\Atmel\Atmel Studio 6.1\Extensions\Application\AvrGCC.dll". Task "RunCompilerTask" C:\Program Files (x86)\Atmel\Atmel Studio 6.1\shellUtils\make.exe all process_begin: CreateProcess(C:\Users\Korsh\AppData\Local\Temp\make704-1.bat, C:\Users\Korsh\AppData\Local\Temp\make704-1.bat, ...) failed. make (e=5): +Єърчрэю т фюёЄєях. make: *** [Test.o] Error 5 Done executing task "RunCompilerTask" -- FAILED. Done building target "CoreBuild" in project "Test.cppproj" -- FAILED. Done building project "Test.cppproj" -- FAILED. Build FAILED. ========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ========== Пробовал запускать в режиме совместимости с Windows XP. Не помогает. При этом все тестовые проекты компилируются на той же версии Atmel Studio 6.1 SP2, но установленной под Windows XP.
-
Добрый день! Пишу для EFM32G880F128 в IDE Keil. Понадобилось разместить функцию для исполнения из RAM. Как вычитал, для этого в Keil используются scatter файлы. Вот какой файл выдал Keil в моём проекте: LR_IROM1 0x00000000 0x00020000 { ; load region size_region ER_IROM1 0x00000000 0x00020000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } RW_IRAM1 0x20000000 0x00004000 { ; RW data .ANY (+RW +ZI) } } Не поможет ли кто грамотно вставить RAM секцию в этот файл? Вот мой, неработающий, вариант: LR_IROM1 0x00000000 0x00020000 { ; load region size_region ER_IROM1 0x00000000 0x00020000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } RW_IRAM1 0x20000000 0x00004000 { ; RW data .ANY (+RW +ZI) } MCU_IRAM +0 { : My section, called MCU_RAM_CODE .ANY (+RW +ZI) .ANY (MCU_RAM_CODE) } } В исходном коде сделал так: #define __SI32_RRAM __attribute__ ((section('MCU_RAM_CODE'))) ... __SI32_RRAM void WriteToFlash (void) Получил от компилятора: Error 600 Too many characters in character constant. Со scatter файлами дело никогда не имел, поэтому, видимо, написал ерунду. Не поможет ли кто грамотно написать?
-
Ещё раз спасибо. Но пишу под Keil. Там, для размещения функции в RAM надо секцию организовывать через scstter файл. Поэтому фирменный код от EnergyMicro не работает, так как Keil не воспринимает атрибуты для Simplicity.
-
Вопрос в дополнение к предыдущему. Стал тестировать запись - микроконтроллер перезагружается. Вот мой код: WDOG_Enable (false); // Disable of the watchdog. // For to be on the safe side. MSC->LOCK = MSC_UNLOCK_CODE; // Unlock of the FLASH writting. MSC-> WRITECTRL |= MSC_WRITECTRL_WREN; // Set enable of the FLASH writting. MSC -> ADDRB = USERDATA_BASE; // Set of the FLASH User memory address. MSC -> WRITECMD = MSC_WRITECMD_LADDRIM; // Write addres to MSC hardware. MSC -> WRITECMD = MSC_WRITECMD_ERASEPAGE; // Command to erase of the first User FLASH page. !!! // !!! If I comment of the previous line the microcontroller works, otherwize it rebooted. // Wait for the FLASH erase process end. i = 0; while (((MSC -> STATUS & MSC_STATUS_BUSY) == MSC_STATUS_BUSY) && (i < 100000)) { i++; } ... // Write of the CKS. MSC -> ADDRB = FLASH_Addr; // Set of the FLASH User memory address. FLASH_Addr = FLASH_Addr + 4; // Increment of the FLASH Address. MSC -> WDATA = CKS; // Write of the dara to FLASH write. MSC -> WRITECMD = MSC_WRITECMD_LADDRIM; // Write addres to hardware. MSC -> WRITECMD = MSC_WRITECMD_WRITEONCE; // Command to write of the one word. // !!! If I comment of the previous line the microcontroller works, otherwize it rebooted. i = 0; while (((MSC -> STATUS & MSC_STATUS_BUSY) == MSC_STATUS_BUSY) && (i < 100000)) { i++; } MSC-> WRITECTRL &= ~MSC_WRITECTRL_WREN; // Disable of the FLASH writting. MSC->LOCK = 0x0; // Lock of the FLASH writting. WDOG_Enable (true); // Enable of the watchdog. WDOG_Feed(); // Reset of the Watchdog. Перезагузка происходит при любой попытке изменить FLASH - стереть или записать. Вчитавшись в User Guide обнаружил маленькую сноску, смысл коиорой - все операции с FLASH только при коде в RAM. Собственно сам вопрос - не даст ли кто ссылку или кусочек кода как грамотно перенести исполняемую функцию в область RAM?
-
Добрый день! Пишу для EFM32G880F128. Мне надо прочитать данные, записанные мной в область User FLASH. Не поделиться ли кто кусочком кода? Пытался работать через указатели, присваивая указателю значение 0xFE0 0000 - начало User Flash - не прошло на этапе компиляции. Пока ничего не придумал, а надо побыстрее.
-
Добрый день! Ещё два вопроса возникли по ходу дела. Использую MSP430F5528. Не поскажет ли кто, правильно ли я понял, что Information Memory как раз и предназначена для хранения коэффициентов, которые нужно помнить при отключени питания, в User Guide просто написано, что она есть, линковщик её не трогает? Железо пока не готово, поэтому, отлаживаю под Симулятором. Не сталкивался ли кто с тем, что блоки FLASH под Симулятором не стираются, как надо? Для инициализации процесса стирания использовал функцию, найденную в Example (void Flash_SegmentErase(uint16_t *Flash_ptr)). В попытках стереть сегмент переписал её не Ассемблере (пример из User Guide) - нет результата. При отладке выбранный сегмент не устанавливается в 0xFF, это результат неверной работы Симулятора, или моё недопонимание?
-
Добрый день! Спасибо за ответ. Вот мой вариант решения, может кому пригодится. Посмотрел в MAP файле раскладку, нашёл последний сегмент во Flash, (0xC200 в банке A), жёстко привязал массив к этому адресу #pragma location = 0xC200 const unsigned char SX1276_Init_Data [128] = {...}; Убедился по MAP файлу, что массив лёг куда надо, не "задев" никого, затем воспользовался модулем \IAR\430\FET_examples\MSP-EXP430F5529\F5xx_F6xx_Core_Lib\HAL_FLASH.C, поставляемым с IAR, там всё есть для работы с FLASH. Думаю, есть более изящный способ. Чего хочется - получить в IDE конечный адрес кода после линковки (псть будет End_Code). Размер стираемого сегмента в MSP430F5528 512 байт - автоматически разместить мой массив в конце кода ((End_Code mod 512) + 1) * 512. Не знаю, как получить конечный адрес кода. Может есть лучшие решения?
-
Пишу для MSP430. Мне необходимо разместить во FLASH массив, который будет програмно переписываться. Как мне объяснить линковщику, что я хочу разместить этот массив в отдельном сегменте, и поместить этот сегмент после сегментов исполняемого кода? Совпадают ли границы сегментов с аппаратными границами FLASH сегментов микроконтроллера MSP430, то есть могу я стирать сегмент, пользуясь его адресом, полученным при компиляции или самому надо озаботиться, чтобы этот адрес совпадал с началом аппаратного FLASH сегмента?
-
IDE Keil
JohnKorsh ответил JohnKorsh тема в Все остальные микроконтроллеры
Добрый день! Memory model Large: Variables in XDATA. Пробовал даже перед декларацией каждой переменной ставить XDATA. Code ROM size: Large 64 K Program Поставил галочки в Use OnChip ROM, Use OnChip XRAM. Ошибка Error L107 - Address space Overflow. Память, действительно, сегментирована, но первые 32 К - не сегментированные, переключаются на три банка "верхние" 32 К. У меня программа на данный момент даже без оптимизации кода 63222 байта и RAM 2876 Байт. То есть должно умещаться без переключения сегментов. Да, ещё, про оптимизацию. Использую прерывания по часовому таймеру (static void Alarm_isr (void) interrupt 8 using 1). При уровне оптимизации кода до 2 (Data Overlaying) включительно работает как и хочу. Если не изменяя кода поставить уровень оптимизации выше - прерывается один раз и дальше программа не идёт. С отладчиком было бы просто, но, так как программа "пролеченная" аппаратный отладчик Silicon Laboratories USB Debug Adapter умеет только загружать программу. Отлаживать приходится на Симуляторе, а он не умеет прерыватьсяя от таймера. Может, кто сталкивался с нюансами оптимизации? -
IDE Keil
JohnKorsh опубликовал тема в Все остальные микроконтроллеры
Добрый день! Работаю в среде Keil, пишу для Si1020 - микроконтроллер, совместимый с 8051 по командам, но 128 KB Flash и 8 KB RAM. При компиляции проекта возникла ошибка линковщика L107 - Address Space Overflow, хотя в сумме размер скомпилированного кода 63138 байт, а RAM - 5116 байт, что меньше 128 К и 8 К, соответственно. Не поможет ли кто понять в чём я неправ? -
IDE Keil
JohnKorsh ответил JohnKorsh тема в Все остальные микроконтроллеры
Я нашёл на Torrent. Пока, вроде, всё работает. Спасибо. -
IDE Keil
JohnKorsh ответил JohnKorsh тема в Все остальные микроконтроллеры
Спасибо большое. У меня только KeyGen. Если есть возможность не укажите ли ли ссылку? -
IDE Keil
JohnKorsh опубликовал тема в Все остальные микроконтроллеры
Добрый день! Пишу в Keil для 80C51. Поставил новую версию 5. Не работает старый Crack (KeyGen по сигнатуре, генерируемой Keil). После ввода кода из KeyGen в таблицу License Manager лицензия до 2020 года добавляется, но остаётся ограничение длины кода на 2 КБайт. ТО есть пробная версия. Вернул старый вариант - ограничение осталось. Снёс, вычистил руками реестр от всех упоминаний Keil, переустановил страрый вариант - ограничение осталось. Не поможет ли кто? Потому как совсем не здорово - программы за 50 КБайт зашкаливают, а отладить ни в Simulator -е, ни в Debuger -е не могу. -
Да, спасибо. Несколько вариантов. От простейшей ёмкости до удлиннителя с встроенным фильтром. Смотрел не спектроанализаторе. Активно шумит до 1 Мгц. Может, кто посоветует литературу?