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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Работа с константами в CodeVision
Apollo
сообщение Jul 11 2007, 11:54
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 10-07-07
Из: Москва
Пользователь №: 29 044



Цитата(AndryG @ Jul 11 2007, 15:13) *
А как можно перелить ПО, не переливая константы. если они будут в проекте с ПО?

Может разделить Вашу задачу на ТРИ части:
загрузчик - залили и забыли
константы - проект представляет из себя просто набор констант
ПО - основная программа, в которой к константам обращаемся через указатели.

Хочу сделать первичную прошивку, которая будет зашиваться при изготовлении устройства и иметь в себе все три части: приложение, константы и загрузчик.

Цитата(AndryG @ Jul 11 2007, 15:13) *
А может вообще вынести константы с проекта и "набивать" их редактируя файл для прошивки?

если константы должны изменятся юзерами ... может им простейшую программку-конфигуратор на комп надо?

Возможно придётся поступить так.

Цитата(AndryG @ Jul 11 2007, 15:13) *
мало инфы ... давайте подробней о загрузчике и константах .. кто они и для кого.

Константы нужны для подстройки АЦП, так скажем вывод их на ноль. Собранная и обработанная информация будет передаваться по сети (неважно какой) и по этой же сети нужно при необходимости обновлять приложение или подстраивать АЦП меняя только константы.
Go to the top of the page
 
+Quote Post
zhevak
сообщение Jul 11 2007, 12:25
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065



Цитата(Apollo @ Jul 11 2007, 17:54) *
Хочу сделать первичную прошивку, которая будет зашиваться при изготовлении устройства и иметь в себе все три части: приложение, константы и загрузчик.
Возможно придётся поступить так.
Константы нужны для подстройки АЦП, так скажем вывод их на ноль. Собранная и обработанная информация будет передаваться по сети (неважно какой) и по этой же сети нужно при необходимости обновлять приложение или подстраивать АЦП меняя только константы.


Не-е, что-то я не очень понимаю. 07.gif

1. Почему нельзя использовать ЕЕПРОМ для этих констант?

2. А изначально константы уже прошиты уже где-то во флешке? Или это есть самая первая прошивка МК? Для самой первой прошивки, я думаю, пойдет сособ корреции HEX-файла ручкам. Достаточно один раз это сделать. Потом прошить и забыть про эти константы. А обращение к ним из программы осуществлять по указателю.

3. Рассмотрите такой вариант: чем отличается загрузчик от основной проги, кроме того, что она сидит на других адресах и стартует немного по другому? Может быть научить загрузчик отличать код программы от кода констант, т.е. прогу он прошьет в одно место, а константы отправит в другое?


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 11 2007, 13:03
Сообщение #18


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Apollo @ Jul 11 2007, 14:54) *
Слушайте сюда. Есть у меня решение вашей проблемы, не требует шаманства с ассемблерным файлом, но требует использования инлайнового асма, и вообще выглядит ужасно. Вот пример размещения асм-функции по определенному адресу:
Код
#asm
    .CSEG
Magic:    ;****Store current address location
    .org    (0x17F2>>1)
    LDI    R16,1500/100
    RET
    .org    (0x17F6>>1)
    LDI    R16,900/100
    RET

    .org    (0x17FA>>1)
    LDI    R16,600/100
    RET
                                  
    .org    Magic;****Restore address location
#endasm
Я вам даю идею, вы ее развиваете дальше. Естественно, что точно также соответствующими директивами можно разместить не только код, но и данные. Вам осталось только разобраться, как объявить в этом асм-коде видимую из С-кода метку и как присвоить эту метку константному указателю на структуру. А впрочем и это не нужно - адрес вам известен. Минус - работа через указатель. Не знаю, насколько хорошо CV оптимизирует константные указатели. Возможно, что обрамив объявление вашей константы в
Код
#asm
    .CSEG
Magic:    ;****Store current address location
    .org    FREQ_0
#endasm

и

#asm
    .org    Magic;****Restore address location
#endasm
вам удастся разместить и саму структуру и таким образом обойтись без указателя.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Apollo
сообщение Jul 11 2007, 14:09
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 10-07-07
Из: Москва
Пользователь №: 29 044



Спасибо всем! В общем решил .asm файл, полученный при компиляции дополнять ассемблерными вставками в начале с определениями и инклудами и в конце с константами и загрузчиком. В общем получилось так-как хотелось, но конечно криво всё это.
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 11 2007, 16:28
Сообщение #20


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Apollo @ Jul 11 2007, 13:24) *
Эти константы нужно будет считывать и загрузчиком (находящемся в области загрузчика) и из основной программы. Поэтому их адрес должен быть неизменен, так как загрузчик меняться не будет. При перезаливке ПО через загрузчик возможны варианты, когда полностью переписывается и ПО и область констант, а возможен вариант, когда переписывается только ПО. Но адрес констант должен быть один и тот же

Я поступил иначе, я не стал встраивать никаких левых констант в программу прошивки, т.к. программ может быть много, размер флеша в разных кристалах разный, и можно просто механически промазать с адресами. Написал прогу, которая любую откомпилированную программу (.hex) перепаковывает в бинарник и добаляет страничку информации для бутлоадера. Страничка это конечно не главное (в ней хранится CRC всей прошивки, версия программы, тип железа, дата создания и т.п.), основная функция этой программы - зашифровать бинарник, чтобы его можно было свободно высылать пользователям. В этой программе я и задаю все требующиеся константы для бутлоадера.
Go to the top of the page
 
+Quote Post
Apollo
сообщение Jul 11 2007, 16:48
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 10-07-07
Из: Москва
Пользователь №: 29 044



Это я тоже применю, но на следующих этапах разработки продукта. На этом этапе хотелось просто скомпилировать всё одновременно, вот и налетел на такую проблемку.
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 11 2007, 18:19
Сообщение #22


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Apollo @ Jul 11 2007, 19:48) *
Это я тоже применю, но на следующих этапах разработки продукта. На этом этапе хотелось просто скомпилировать всё одновременно, вот и налетел на такую проблемку.

Если вы это будете применять, то сейчас может стоит забыть про константы "по определенному адресу".
Программка которая будет добавлять к "hex'у" нужные вам строки по требуемым адресам пишется за час.
Go to the top of the page
 
+Quote Post
VDG
сообщение Jul 11 2007, 21:55
Сообщение #23


Знающий
****

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



Цитата(Apollo @ Jul 11 2007, 14:24) *
Им нужно написать тупо, чтобы изменить то-то надо залезть туда-то и потом откомпилировать.

А они купили компилятор? Если нет, то подсовывание липовой лицензии они уже проводили, так что вряд ли это им будет сложно. smile.gif
Go to the top of the page
 
+Quote Post

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

 


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


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