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

 
 
 
Reply to this topicStart new topic
> СodeVision, как отключить инициализацию
valera_o
сообщение Oct 14 2009, 12:26
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 2-04-08
Пользователь №: 36 402



При компиляции файла проги, помимо кода, который написан в основном окне, в asm файле появляются макросы инициализации ОЗУ и другие. Как избавиться от этой инициализации, съедается место и по включению, хоть и небольшая, но есть задержка?
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 14 2009, 14:13
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



После сброса стартап выполняется. Потому, что main это такая же функция как и другие. Перед вызовом main выполняется код, который по крайней мере делает две вещи: а) инициализирует указатель стека и б) обнуляет и/или инициализирует начальными значениями глобальные и статические переменные. Если хотите обойтись без стартапа пишите программу на ассемблере, либо ищите в документации CodeVision описание функции аналогичной IARовской __low_level_init.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Oct 14 2009, 15:49
Сообщение #3


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Или найдите способ (не знаю как это делается в СodeVision) объявить все глобальные переменные как no init. Стартап будет выполняться гораздо быстрее, но переменные придётся инициализировать вручную.
Насчёт того, что съедается место, то стартап съедает его гораздо меньше, чем совокупный код ручной инициализации.
Go to the top of the page
 
+Quote Post
oll
сообщение Oct 14 2009, 18:20
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 10-10-05
Пользователь №: 9 463



В конфигурации проекта есть опция использования внешнего стартапа. Создайте свой стартап по образу и подобию Кодевижена, выкинув "лишнее".
Go to the top of the page
 
+Quote Post
valera_o
сообщение Oct 15 2009, 11:38
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 2-04-08
Пользователь №: 36 402



Инициализация переменных - эт нормально. А вот когда "0" записываются во всё ОЗУ... Вот спрашивается зачем это мне, если я сам потом могу очистить именно нужную мне область?
Попробую найти опцию внешнего стартапа. Спасибо за советы.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Oct 15 2009, 12:27
Сообщение #6


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(valera_o @ Oct 15 2009, 14:38) *
Инициализация переменных - эт нормально. А вот когда "0" записываются во всё ОЗУ... Вот спрашивается зачем это мне, если я сам потом могу очистить именно нужную мне область?

0 записывается не во всё ОЗУ, а только в неинициализированные глобальные переменные.
Если Вы потом всё равно собираетесь это делать, то неужели Вы сделаете это быстрее и/или короче, чем это сделано в стартапе?
Go to the top of the page
 
+Quote Post
oll
сообщение Oct 15 2009, 18:19
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 10-10-05
Пользователь №: 9 463



In every program the CodeVisionAVR C compiler automatically generates a code sequence to make the following initializations immediately after the AVR chip reset:
1. interrupt vector jump table
2. global interrupt disable
3. EEPROM access disable
4. Watchdog Timer disable
5. external RAM access and wait state enable if necessary
6. clear registers R2 … R14
7. clear the RAM
8. initialize the global variables located in RAM
9. initialize the Data Stack Pointer register Y
10. initialize the Stack Pointer register SP
11. initialize the UBRR register if necessary

The automatic generation of code sequences 2 to 8 can be disabled by checking the Use an External Startup Initialization File check box in the Project|Configure|C Compiler|Code Generation dialog window. The C compiler will then include, in the generated .asm file, the code sequences from an external file that must be named STARTUP.ASM . This file must be located in the directory where your main C source file resides.
You can write your own STARTUP.ASM file to customize or add some features to your program. The code sequences from this file will be immediately executed after the chip reset.
A basic STARTUP.ASM file is supplied with the compiler distribution and is located in the C:\cvavr2\bin\

Сообщение отредактировал oll - Oct 15 2009, 18:21
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Oct 16 2009, 07:37
Сообщение #8


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(oll @ Oct 15 2009, 21:19) *
7. clear the RAM

Вот за такие выходки я и ненавижу некоторых производителей тулчейнов, грубо попирающих стандарты.
Go to the top of the page
 
+Quote Post
valera_o
сообщение Oct 16 2009, 08:25
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 2-04-08
Пользователь №: 36 402



Отлично. Всё нашел.
Но в откомпиленном асм-файле всё равно куча каких-то левых макросов, кроме таблицы векторов, адресов регистров. Еще бы и их попилить, эти самые макросы или хотя бы знать зачем они нужны...

Сообщение отредактировал valera_o - Oct 16 2009, 08:44
Go to the top of the page
 
+Quote Post
Александр Куличо...
сообщение Oct 16 2009, 10:41
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 6-03-06
Из: Украина, г. Винница
Пользователь №: 15 017



А какой смысл макросы пилить? они в hex все равно не попадают, если не используются в программе.
Go to the top of the page
 
+Quote Post
valera_o
сообщение Oct 16 2009, 12:54
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 2-04-08
Пользователь №: 36 402



Т.е. в выходном асме макросы есть, а в выходном хексе их нет?
Go to the top of the page
 
+Quote Post
oll
сообщение Oct 16 2009, 13:43
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 10-10-05
Пользователь №: 9 463



Цитата(valera_o @ Oct 16 2009, 13:25) *
хотя бы знать зачем они нужны...

там всякие деления умножения и прочее, если не используются то "в выходном хексе их нет".
Go to the top of the page
 
+Quote Post
valera_o
сообщение Oct 16 2009, 14:13
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 2-04-08
Пользователь №: 36 402



Сурово... Ясненько, спасибо за помощь всем!
Go to the top of the page
 
+Quote Post

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

 


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


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