|
|
  |
Как добавить данные DATA FLASH в HEX-файл, SiLabs 121 |
|
|
|
May 15 2009, 07:49
|
Знающий
   
Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831

|
Цитата(редактор @ May 15 2009, 16:06)  Используется SiLabs C8051F121 Есть необходимость во время программирования записать данные в DataFlash. Подскажите, кто знает, как объявить эти данные в программе (Си или АСМ не важно) чтобы они после компиляции попали в HEX-файл. Могу руками дописать дописать несколько строк в HEX, но не знаю по какому адресу их расположить. Делать приложение для записи этих данных через программатор пока не хочется.
Заранее всем спасибо! А что за DataFlash? Имеете ввиду Flash память программ или , что мало вероятно, внешнюю какую-то? И если можно, выразитесь поконкретней о свой задаче. Чисто телепатически я представляю что Вы имели ввиду одно из двух. 1. Хотите записывать что-то вроде серийного номера. Тогда используйте прогу от silabsa MCUProductionProgrammer. В ней можно это сделать, только заранее выбрать адрес для этого серийника, чтобы не попал в код, т.е. где то в конце памяти. Затем из проги добраться до него просто. 2. Если просто данные, то pdata... Меня настораживает противоречивость: "во время программирования" и "после компиляции"? Ведь после компиляции все данные попадают в HEX
|
|
|
|
|
May 18 2009, 04:00
|
Местный
  
Группа: Участник
Сообщений: 356
Регистрация: 9-06-07
Пользователь №: 28 315

|
В большинстве МК от SiLabs имеется два вида flash-памяти память программ и память данных.
Программа состоит из двух частей: загрузчика и непосредственно приложения. Загрузчик служит для обновления программы.Также при старте загрузчик проверяет контрольную сумму приложения и далее разрешает или блокирует работу приложения. Чтобы точно знать с чем сравнивать контрольную сумму решил использовать flash-память данных для хранения контрольной суммы.
Держать их в области кода не очень удобно, так как для перезаписи необходимо стирать часть программы, разнести их адреса с программой кБайт так на 10 возможно,(опыт имеется). Хотелось сделать более красиво. Есть энергонезависимая память для данных, надо ее пользовать. В процессе работы доступ раcписан, и все хорошо.
А вот при программировании получается возможно записать только код в flash-память программ. Поэтому приходиться делать несколько лишних операций: записать загрузчик, записать приложение, собрать стенд в котором дать загрузчику команду на расчет контрольной суммы и ее запись.
Для упрощения процесса настройки интересуюсь КАК ЗАПИСАТЬ FLASH-ПАМЯТЬ ДАННЫХ ИЗ ПРОГРАММАТОРА. Это возможно. В командах работы с USB-адаптером есть описание. Нужно лишь приложение, которое это может делать, в KEIL таких настроек не нашел.
--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
|
|
|
|
|
May 18 2009, 05:11
|

Частый гость
 
Группа: Свой
Сообщений: 179
Регистрация: 1-10-07
Из: НЧ
Пользователь №: 30 966

|
На сайте силабса есть такое приложение https://www.silabs.com/Support%20Documents/...nProgrammer.zipОно идет с исходниками - можно поправить его под собственные нужды. А вообще - что Вам мешает прошивать девайс с помощью собственного загрузчика? Т.е. записываете в контроллер только загрузчик а саму программу шьете уже с помощью своих средств загрузки.
|
|
|
|
|
May 18 2009, 10:55
|
Знающий
   
Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831

|
Цитата(редактор @ May 18 2009, 15:00)  В большинстве МК от SiLabs имеется два вида flash-памяти память программ и память данных. Я не работал конкретно с 121. Но судя по описанию он не отличается от остальных. Но в них НЕТ отдельной flash памяти данных! Есть память программ с возможностью записи из самой программы. Хотя это к делу не относится, скорее к терминологии ;-) . А по делу Вам уже kosyak подсказал. Если бы Вы на этапе программирования знали контрольную сумму, было бы проще. Из родной IDE silab можно сразу ячейки кода менять в соответствующем окне code и нажатием кнопки "туды-сюды"
|
|
|
|
|
May 18 2009, 13:51
|

Частый гость
 
Группа: Свой
Сообщений: 179
Регистрация: 1-10-07
Из: НЧ
Пользователь №: 30 966

|
Цитата(barabek @ May 18 2009, 14:55)  Я не работал конкретно с 121. Но судя по описанию он не отличается от остальных. Но в них НЕТ отдельной flash памяти данных! Видимо имеется ввиду разделение 128 килобайт flash памяти на 4 банка...
|
|
|
|
|
May 18 2009, 22:05
|
Знающий
   
Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831

|
Цитата(kosyak© @ May 19 2009, 00:51)  Видимо имеется ввиду разделение 128 килобайт flash памяти на 4 банка... Возможно топикстартер это имел ввиду, но все-таки это не память данных. Тем более он сказал, что "в большинстве МК". В большинстве МК память данных ТОЛЬКО RAM. Да, кстати, я подумал. Ведь при компиляции программы выдается контрольная сумма. Правда я не знаю как она вычисляется. Но главное что при программировании она уже известна, следовательно можно делать как я сказал: записать в CODE в нужные ячейки и нажать "Refresh Values" (alt+R).
|
|
|
|
|
May 19 2009, 03:40
|
Местный
  
Группа: Участник
Сообщений: 356
Регистрация: 9-06-07
Пользователь №: 28 315

|
Цитата(barabek @ May 18 2009, 14:55)  Я не работал конкретно с 121. Но судя по описанию он не отличается от остальных. Но в них НЕТ отдельной flash памяти данных! Есть память программ с возможностью записи из самой программы. Хотя это к делу не относится, скорее к терминологии ;-) . А по делу Вам уже kosyak подсказал. Если бы Вы на этапе программирования знали контрольную сумму, было бы проще. Из родной IDE silab можно сразу ячейки кода менять в соответствующем окне code и нажатием кнопки "туды-сюды" В большинстве MK от SiLabs (за все не берусь но работал с сериями 12X, 04x) кроме памяти программ имеется от 128 до 256 бай FLASH-памяти для долговременного хранения данных. Цитата(kosyak© @ May 18 2009, 09:11)  На сайте силабса есть такое приложение https://www.silabs.com/Support%20Documents/...nProgrammer.zipОно идет с исходниками - можно поправить его под собственные нужды. А вообще - что Вам мешает прошивать девайс с помощью собственного загрузчика? Т.е. записываете в контроллер только загрузчик а саму программу шьете уже с помощью своих средств загрузки. Когда делаешь сам, то можно и через загрузчик и из IDE. Но необходимо отдать конечные файлы и методику программирования на производство. И чем меньше там кнопок и действий тем надежнее. Отсюда и желание зашивать сразу все и везде.
--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
|
|
|
|
|
May 27 2009, 14:01
|

Местный
  
Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276

|
Цитата(редактор @ May 19 2009, 07:40)  В большинстве MK от SiLabs (за все не берусь но работал с сериями 12X, 04x) кроме памяти программ имеется от 128 до 256 бай FLASH-памяти для долговременного хранения данных. Добрый день. Для начала выставьте тип выходного файла hex HEX-386 (для кейла в настройках проекта, для других наверное опциями). Попробуйте осуществить запись по адресам начиная с 0x020000. Когда я использовал в проекте все 128 кбайт, то код валялся в HEX файле в адресном пространстве от 0x000000 до 0x01FFFF Возможно что за основным кодом начинается скратчь. И самое интересное, я сам такой HEX утилитой Силабовой не заливал (все время из кейла), но наткнулся на сообщения, что у народа такой хек залить силабовой утилитой не получилось (видно не различет формат). Т.е. программа после такой заливки не работала, хотя залитая из кейла работает. Вот тут есть по поводу программирования таких хеков на производстве.Удачи
--------------------
Удачи.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|