-
Постов
10 921 -
Зарегистрирован
-
Посещение
-
Победитель дней
31
Весь контент Сергей Борщ
-
Однозначно первый вариант. Второй и третий ломаются элементарно - пишется прошивка которая тупо сливает по любому доступному интерфейсу содержимое "неизменной" части прошивки. В отличие от AVR атмел не догадался вставить в ARM возможность защитить одну область кода от чтения из второй области. На AVR второй и третий вариант проходят замечательно. Причем сэкономленное на дешифровке место в программной памяти можно использовать для необновляемых (и тоже защищенных от чтения) низкоуровневых функций управления окружающим железом.
-
Web интерфейс
Сергей Борщ ответил Muxamor тема в ARM
Еще можно посмотреть проект Ethernut http://www.ethernut.de/ -
IAR+SAM7X256+MT-link
Сергей Борщ ответил Karl тема в ARM
Придумал. Reset() { __writeMemory32(0xA5000004, 0xFFFFFD00, "Memory"); // reset the peripherals if( __driverType("jlink") ) { __sleep(1000000); // wait __emulatorSpeed(32000); // set JTAG speed ~ slow clock } __writeMemory32(0x00000001, 0xFFFFFC20,"Memory"); // OSC enable, no timeout while (! (__readMemory32(0xFFFFFC68, "Memory") & (1 << 0)) ); // wait until MOSCS __writeMemory32(0x00190605, 0xFFFFFC2C,"Memory"); // *26/5 set LOCK after 6 SCLK __writeMemory32(0x00000004, 0xFFFFFC30,"Memory"); // PRES = 2 while (! (__readMemory32(0xFFFFFC68, "Memory") & (1 << 3)) ); // wait untli MCKRDY __writeMemory32(0x00000007, 0xFFFFFC30,"Memory"); // MCK = PLLCK / 2 while (! (__readMemory32(0xFFFFFC68, "Memory") & (1 << 3)) ); // wait untli MCKRDY if( __driverType("jlink") ) { __emulatorSpeed(0); // auto-detect new JTAG speed __sleep(1000000); // wait } __message " MCK ready "; } -
IAR+SAM7X256+MT-link
Сергей Борщ ответил Karl тема в ARM
Да, виноват. Работает. Поставил JTAG speed Fixed 32 KHz все работает. Но медленно :-( Это не красиво. Мне скажем вообще не надо run to main. Надо подумать как заставить его из .maс "прийти в себя" -
IAR+SAM7X256+MT-link
Сергей Борщ ответил Karl тема в ARM
Не работает. Во всяком случае с IAR4.30A - "Memory access timed out @ 0x00000010 -> JTAG speed too high?" Правда пользую MT-Link без RDI. Какая у вас версия IAR? -
Выходной eeprom-файл
Сергей Борщ ответил Mexx тема в IAR
Неизвестно. Не должно. Как именно объявляешь? Да.__root __eeprom volatile const unsigned char params[2] @DATA_ADDR = {1, 2}; __root __eeprom volatile const unsigned char crc[1] @CRC_ADDR = {0x12}; Но зачем хранить данные которые не используются? -
Fatal Error[c0000005]: Uncontrolled termination
Сергей Борщ ответил otrog тема в IAR
Что-то у меня в памяти крутится что примерно год назад на каком-то из форумов обсуждался похожий вылет какой-то программы после установки какого-то Firewall. Вроде Outpost. Уж не про ИАР ли тогда писали? Поскольку я тем файрволом не пользовался и не собирался, все забыл. Т.е. конкретно помню только что какая-то программа вылетала из-за файрвола и замена файрвола на другой все лечила. Не ваш случай? Файрвол не ставили недавно? -
Пропадание прерываний при отладке через J-Link
Сергей Борщ ответил Dron_Gus тема в ARM
В том то и дело что все читал. Но уже не найти где именно. Если не сложно в двух словах повторите... В той же ветке, на которую дал ссылку zltigo мое понимание ситуации. На данный момент это вылилось в такую добавку к .maс: execUserReset() { ............... Reset_AIC(); __message "-------------------------------Set PC Reset ----------------------------------"; __writeMemory32(0x00000000,0xB4,"Register"); } var i; Reset_AIC() { // AIC __writeMemory32(FFFFFFFF, 0xFFFFF124,"Memory"); // IDCR, disable ints for (i = 0; i < 32; i++) { __writeMemory32(0, 0xFFFFF000 + * 4,"Memory"); // SMR[0..31] __writeMemory32(0, 0xFFFFF080 + * 4,"Memory"); // SVR[0..31] } for (i = 0; i < 8; i++) { __readMemory32(0xFFFFF100,"Memory"); // IVR, __writeMemory32(0, 0xFFFFF130,"Memory"); // EOICR, reset priority controller logic } } не скажу, что работает идеально, но существенно помогает. и конечно AT91C_BASE_AIC->AIC_EOICR = 0 в __low_level_init(); после инициализации контроллера (шаманство, но помогает). -
Поменять порядок следования переменных EEPROM
Сергей Борщ ответил SapegoAL тема в IAR
У ИАРа для ARM есть __intrinsic int __segment_size(segment). В стоящем у меня ИАРе для AVR такой функции нет. К тому же почти уверен, что компилятор не допустит вызова функции при инициализации глобальной переменной. Могу предложить заход "из-за угла". extern void ee_size(); uint32_t __eeprom eAdrProgEnd = (uint32_t)&ee_size; trick.s90: PUBLIC ee_size RSEG EEPROM_I ee_size EQU SIZEOF(EEPROM_I) END Т.е. передавать константу из ассемблера (где можно ей присвоить размер сегмента) как адрес фиктивной функции. Это конечно нечестно, но другого способа придумать не могу :-( -
Критерии перехода к RTOS
Сергей Борщ ответил kichkine тема в Операционные системы
:-) Спасибо. Может пригодится. -
Критерии перехода к RTOS
Сергей Борщ ответил kichkine тема в Операционные системы
Поверьте, разберется, я же разобрался хотя меня это очень мало интересовало в застенках ВТУЗа :) . Я почти неспособен (из-за какого то внутреннего протеста, что ли) усваивать знания практическое применение которых я не нахожу или не понимаю, но только я пойму для чего это надо, и это уже совсем другой я :) . Эдакий эгоизм в познании, если угодно... Это все мне знакомо, однако есть у меня и противоположный опыт - в школе математика давалась на "ура" в ВУЗе вышка не пошла вообще - трояк с натягом, сейчас она мне очень нужна, и книжки читаю, а все равно "не доходит". Приходится методом тыка. Рискну предложить-приложить МГУ, К.Ю.Богачев, ОСРВ предварительные материалы лекций. Судя по оглавлению толковая книжка. P.S. Если кто желает - киньте в ваши закрома на фтп. rtos.part1.rar rtos.part2.rar -
Подключение ЖКИ BC1601A
Сергей Борщ ответил lzrvt тема в Средства индикации
Вот таких тонкостей не знаю. Все что попадались, от самых разных производителей, все имели именно такую конфигурацию, ограниченную контроллером-прототипом HD44780 Физически вытекает из архитектуры контроллера. В противном случае требуется дополнительный драйвер столбцов (дисплеи 16*2 имеют уже две "капли") -
Подключение ЖКИ BC1601A
Сергей Борщ ответил lzrvt тема в Средства индикации
Дело в программе и невнимательном чтении документации. ЖКИ дисплеи 1 строка*16 символов с точки зрения общения с ними представляют из себя дисплеи 2 строки*8 символов у которых строки "склеены" в одну. Поэтому первое знакоместо имеет адрес 0x00, восьмое - 0x07, девятое - 0x40 и шестнадцатое - 0x47. Так что ваша программа должна сама отслеживать желаемое положение курсора и корректировать его. -
Вставки ассемблера в код C
Сергей Борщ ответил Petka тема в IAR
как сказал vmp, читать иструкцию: #include <inarm.h> TStatusReg StatusReg; StatusReg = __get_CPSR(); do { __set_CPSR(StatusReg | (1<<7)); } while (!(__get_CPSR() & (1<<7))); // disable IRQ -
Библиотеки в IAR
Сергей Борщ ответил chernenko тема в AVR
На самом деле если ваши функции умещаются в 2К вместе с загрузчиком - прошивальщиком, то вполне можно воспользоваться для них областью загрузчика в флеши АВРа. При одной из комбинаций фузов эта область заблокирована для чтения из остальной флеши. Отдаете заказчику прошитый кристалл, он дописывает свою часть в application - секцию. Выпускаем устройство таким методом - все функции управления железом скрыты, заказчик имеет доступ к ним через API. -
Критерии перехода к RTOS
Сергей Борщ ответил kichkine тема в Операционные системы
Извечный спор откуда начинать - с практики или теории. Поскольку не верю в "Нужно будет, человек и с математикой этого разберется", то дальше обсуждать не буду. -
прерывания от таймеров в SAM
Сергей Борщ ответил SpiritDance тема в ARM
Тогда не представляю :-( -
Критерии перехода к RTOS
Сергей Борщ ответил kichkine тема в Операционные системы
4. Для первого - поверхностное знание теории (неучет причин по которым дохнут аппараты), для второго - получение результата методом тыка свидетельствует о недостаточной подготовке, т.е. непровессионализме. -
Критерии перехода к RTOS
Сергей Борщ ответил kichkine тема в Операционные системы
В вашем ответе изначальное предположение о том, что хотя бы один из них является профессионалом может быть ложным. Скажем так. -
прерывания от таймеров в SAM
Сергей Борщ ответил SpiritDance тема в ARM
Отлаживаете через JTAG? Учитываете, что кнопка "сброс" в оболочке сбрасывает только ядро, но не периферию, т.е. если перед нажатием кнопки "сброс" таймер был включен, то он продолжает тикать? Учитываете, что если открыто окно с регистрами периферии, это вызывает их чтение и сброс некоторых флагов (и другие действия по чтению некоторых регистров)? -
Как управлять ЖК индикатором?
Сергей Борщ ответил Slash тема в В помощь начинающему
Спорить не буду. (но останусь при своем мнении). А чего тут спорить? У производителя в соответствующем разделе находим: http://www.powertip.com.tw/technical/techn...ey=Technical#a6 Precautions For Using Of LCDs Do not apply DC voltage http://www.darisus.com/data/Display_EL/DE158-RS-20_84.pdf Voltage mode - static Driving frequency, min 30 typ 32 max 100 Hz Опа... вот тут я всех обманул в посте выше. Нормальная частота оказывается не 32КГц, а 32 Гц. Да и у уважаемых производителей (Atmel) находим (AVR063: LCD Driver for the STK504): The LCD must be driving by alternating current (AC). Direct current (DC) will cause electrophoresis effects in the liquid crystal and will degrade the display. There are two AC driving method: the static driving methods and the multiplex driving method. In the static driving method, the LCD is driven with two square waveforms. Вот еще до кучи ссылка: http://www.pacificdisplay.com/lcd_static_drive.htm -
Критерии перехода к RTOS
Сергей Борщ ответил kichkine тема в Операционные системы
Согласен. Но вопрос задан конкретно. Кто профессионал? Варианты ответов: 1 и 2. Вопрос хоть и конкретный, но некорректный. Вот я вам задам аналогичный вопрос: "Вы уже перестали бить свою жену по ночам?" Вариантов ответа даю вам два - "Да" и "Нет". Выбирайте. -
Как управлять ЖК индикатором?
Сергей Борщ ответил Slash тема в В помощь начинающему
Статик драйвер вовсе не означает допустимость постоянного напряжения. Это означает лишь наличие одной подложки на все сегменты, т.е. отсутствие мультиплицирования. Точно такой же тип как и у исходного E0803. Для управления такими индикаторами на подложку подается меандр частотой около 32КГц, а на сегменты такой же меандр - на зажигаемые противофазно подложке (к ЖК между подложной и сегментом оказывается приложено напряжение +-Uп), на погашеные - синфазно (напряжение на ЖК = 0). В качестве примера можно посмотреть даташит на микрочиповский драйвер AY0438. Подробно про управление дисплеями с разным мультиплицированием можно почитать в даташитах на контроллеры с встроенным драйвером ЖКИ, например очень подробно с диаграммами расписано в User Guide на msp430x3xx. -
Много вопросов накопилось... Сильно не глумитесь
Сергей Борщ ответил Screw тема в AVR
Пожалуй я тоже вставлю слова, т.к. вложенные прерывания использовал, и как решить ту задачу без них не представляю (при помощи ШИМ генерится огибающая аналогового сигнала, при периоде ШИМ 128 тактов процессора его обработчик прерывания выполняется за 105...120 тактов, а в оставшиеся такты надо за 40 периодов ШИМ подготовить данные для следующих 40 периодов без участия основной программы, т.е. в обработчике другого прерывания). Решается довольно просто: void Timer1_compA_handler() { TIMSK &= ~(1<< OCIE1A); //запрещаем это прерывание __enable_interrupts(); // разрешаем вложенные собственно обработчик, вложенные прерывания разрешены __disable_interrupts(); // запрещаем вложенные TIMSK |= (1<< OCIE1A); разрешаем это прерывание } Резюме - панически бояться вложенных прерываний не нужно. Но тщательно обдумывать любое решение необходимо. -
Глюк PCAD2002
Сергей Борщ ответил Постоногов тема в P-CAD 200x howto
Глюк. Часто происходит если "внутри" одного полигона оказывается другой. Помогает разбивка полигона на два, меньшего размера.