реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Микроконтроллеры SiLabs C8051Fxxx, Как Вы записываете версию программы во Flash?
Волощенко
сообщение Oct 5 2006, 14:44
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 347
Регистрация: 16-02-06
Из: г.Николаев, Украина
Пользователь №: 14 377



Добрый день!
Работаю с uVision2 от Keil. Хотелось бы, чтоб в памяти программ cdata, автоматически (не в ручную) формировались константы <день>.<месяц>.<год>, которые затем можно считывать по командам в UART, для последующей передачи в компьютер как текущую версию программы.
Кто-то уже сделал так? Подскажите, спасибо за ответ.
Go to the top of the page
 
+Quote Post
Shandy
сообщение Oct 6 2006, 07:00
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 3-03-06
Пользователь №: 14 931



Можно так:
code char* code Prog_ID = {__FILE__, __DATE__, __TIME__};
Это записать в начале программы, перед main()

Сама передача в посл. порт:
printf("%s, %s, %s", Prog_ID[0], Prog_ID[1], Prog_ID[2]);
Go to the top of the page
 
+Quote Post
Волощенко
сообщение Oct 6 2006, 09:14
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 347
Регистрация: 16-02-06
Из: г.Николаев, Украина
Пользователь №: 14 377



К Shandy, спасибо все получилось! smile.gif
Я перед main() записал:
code char* code Prog_ID = {__DATE__};
это вставляет в hex-файл текущую дату в ASCII.

Затем считывал из Flash 10 байт в массив Ro для последующей выдачи через UART (здесь Prog_ID[3] и Prog_ID[6] - всегда содержат коды пробелов):
Ro[0]=Prog_ID[4]; Ro[1]=Prog_ID[5]; //Data
Ro[2]=Prog_ID[3];
Ro[3]=Prog_ID[0]; Ro[4]=Prog_ID[1];Ro[5]=Prog_ID[2]; //Month
Ro[6]=Prog_ID[6];
Ro[7]=Prog_ID[7]; Ro[8]=Prog_ID[8]; Ro[9]=Prog_ID[9]; Ro[10]=Prog_ID[10]; //Year

Затем принял по RS-232 и вывел на экран текущую дату как строку AnsiString:
06 Oct 2006

------------------------------------------------------
Только вот запись перед main() такой строки как:
code char* code Prog_ID = {__FILE__, __DATE__, __TIME__};
вызывает при компиляции сообщение:
MAIN.C(18): error C242: 'scalar': too many initializers
что остается немного непонятно.
Go to the top of the page
 
+Quote Post
freux
сообщение Oct 6 2006, 14:33
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 41
Регистрация: 7-02-05
Пользователь №: 2 473



Может Prog_ID объявить как массив:
code char* code Prog_ID[] = {__FILE__, __DATE__, __TIME__};
?

Сообщение отредактировал freux - Oct 6 2006, 14:34
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 19:17
Рейтинг@Mail.ru


Страница сгенерированна за 0.01386 секунд с 7
ELECTRONIX ©2004-2016