|
STM3210X_LD_VL, табличная инициализация периферии |
|
|
|
Jan 26 2013, 11:15
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Привет. Озадачился сабжем на мелкие армы. От простого к сложному, сделал такую штуку.
batch_conf.zip ( 1.52 килобайт )
Кол-во скачиваний: 71Обновляю здесь, пока есть возможность редактировать.пример использования CODE #include "batch_conf.h" batch_BEGIN(main_tbl) batch_OR(&(RCC->CR),RCC_CR_HSEON) batch_WAIT(&(RCC->CR), RCC_CR_HSERDY) batch_WRITE(&(RCC->CFGR),RCC_CFGR_PLLMULL_0 |RCC_CFGR_PLLSRC) batch_OR(&(RCC->CR), RCC_CR_PLLON) batch_WAIT(&(RCC->CR), RCC_CR_PLLRDY) batch_OR(&(RCC->CFGR),2) batch_END;
batch_conf(main_tbl, NULL);
Создается таблица во флеше. Элемент - структура {uint32_t port, data;} Названия полей многоцелевые, поэтому чисто условные, можно unionom разделить для ясности В тетраду бит 24-27 поля port встроена команда Конфигуратор выполняет эти команды Функция заняла 316 байт в кейле. фрагмент, соответствующий примеру CODE RCC->CR |= RCC_CR_HSEON; while(!(RCC->CR & RCC_CR_HSERDY)); RCC->CFGR = RCC_CFGR_PLLMULL_0 |RCC_CFGR_PLLSRC ; RCC->CR |= RCC_CR_PLLON; while(!(RCC->CR & RCC_CR_PLLRDY)); RCC->CFGR |= 2; Разницы на коротких кусках практически нет. Т.е. смысл только в тотальном использовании такого метода с исключением вычислений этапа выполнения. Утоптать конфигуратор, конечно, можно. А также к байт-коду перейти.
Сообщение отредактировал _Pasha - Jan 26 2013, 16:27
|
|
|
|
|
 |
Ответов
|
Jan 26 2013, 14:01
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Подобным образом (парами адрес-данные в собираемой линкером табличке) какой-то из многочисленных компиляторов i51 набирал инициализацию переменных. Т.е. там все переменные шли в одну секцию, без разбора .data/.idata/.bss/.ibss (даже не в одну секцию, а просто "в память"), на старте чистилась нулями вся оперативка, а потом из таблички заносились не нули. Что интересно, по сравнению с более привычным разделением на секции и копированием двух массивов в .data и .idata, на мелких программах даже выигрыш был. Кстати, о секциях. Почему бы не набирать инициализирующую таблицу в специальной секции, приблизительно как тут набирается информация о прилинкованных модулях. Будет каждый модуль енсти с собой свою информацию (чего не любил, «ещё со времён ассемблера»™, так это централизованной инициализации чем-то в духе __low_level_init() в одном месте на всю программу).
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
Сообщений в этой теме
_Pasha STM3210X_LD_VL Jan 26 2013, 11:15 Tahoe Цитата(_Pasha @ Jan 26 2013, 15:15) Созда... Jan 26 2013, 12:51 _Pasha Цитата(Tahoe @ Jan 26 2013, 16:51) 1. Нас... Jan 26 2013, 13:32 scifi Цитата(Tahoe @ Jan 26 2013, 16:51) ... Jan 26 2013, 17:27 HHIMERA Цитата(_Pasha @ Jan 26 2013, 15:15) От пр... Jan 26 2013, 13:03  ReAl Цитата(_Pasha @ Jan 26 2013, 16:12) А ест... Jan 26 2013, 14:20   _Pasha Цитата(ReAl @ Jan 26 2013, 18:20) Зато им... Jan 26 2013, 14:45    AHTOXA Цитата(_Pasha @ Jan 26 2013, 20:45) За чт... Jan 26 2013, 14:53     _Pasha Цитата(AHTOXA @ Jan 26 2013, 17:53) То ес... Jan 26 2013, 16:11 Golikov A. Народ а можно в 2 словах в чем бизнес то? За что б... Jan 26 2013, 14:13 _Pasha Цитата(Golikov A. @ Jan 26 2013, 18:13) Н... Jan 26 2013, 14:17 Golikov A. что то я видать отстал от технологий...
я вообще ... Jan 26 2013, 14:35 Golikov A. не я правда что-то не втыкаю
почему
batch_OR(... Jan 26 2013, 14:58 _Pasha Цитата(AHTOXA @ Jan 26 2013, 18:53) +1:)
... Jan 26 2013, 15:26 Golikov A. чет я все равно не понимаю...
это для систем в к... Jan 26 2013, 15:32 kolobok0 Цитата(Golikov A. @ Jan 26 2013, 19:32) .... Jan 26 2013, 17:12  Golikov A. Цитата(kolobok0 @ Jan 26 2013, 21:12) про... Jan 26 2013, 18:25   AHTOXA Цитата(Golikov A. @ Jan 27 2013, 00:25) Т... Jan 26 2013, 18:52    HHIMERA Цитата(AHTOXA @ Jan 26 2013, 21:52) Плюс ... Jan 26 2013, 19:07    Golikov A. Цитата(AHTOXA @ Jan 26 2013, 22:52) Автор... Jan 26 2013, 19:26     AHTOXA Цитата(Golikov A. @ Jan 27 2013, 01:26) Т... Jan 26 2013, 19:39      Golikov A. Цитата(AHTOXA @ Jan 26 2013, 23:39) На ST... Jan 26 2013, 20:14       ReAl Цитата(Golikov A. @ Jan 26 2013, 22:14) а... Jan 26 2013, 20:37        Golikov A. Цитата(ReAl @ Jan 27 2013, 00:37) А у CM0... Jan 26 2013, 20:41        AHTOXA Цитата(ReAl @ Jan 27 2013, 02:37) И ещё к... Jan 26 2013, 20:43        _Pasha Цитата(ReAl @ Jan 27 2013, 00:37) Надо ум... Jan 26 2013, 20:45   _Pasha Цитата(Golikov A. @ Jan 26 2013, 22:25) Т... Jan 26 2013, 20:16 AHTOXA Цитата(Golikov A. @ Jan 27 2013, 02:14) а... Jan 26 2013, 20:23 _Pasha Цитата(AHTOXA @ Jan 27 2013, 00:23) Ну во... Jan 26 2013, 20:41 Golikov A. кажется начинаю понимать...
а сколько операций ух... Jan 26 2013, 20:38 Golikov A. Хоть плачь...
стандартный вариант
в регистр запи... Jan 26 2013, 20:55 AHTOXA Цитата(Golikov A. @ Jan 27 2013, 02:55) ч... Jan 26 2013, 20:58 Golikov A. код команды грузить же все равно надо?
данные груз... Jan 26 2013, 21:04 _Pasha Цитата(Golikov A. @ Jan 27 2013, 00:04) к... Jan 26 2013, 21:12 Golikov A. Можете расписать что происходит при записи допусти... Jan 26 2013, 21:15 _Pasha Цитата(Golikov A. @ Jan 27 2013, 00:15) М... Jan 26 2013, 21:18 Golikov A. ну да естественно как виртуальная машина обрабатыв... Jan 26 2013, 21:23 _Pasha Выбрали запись.
Декодировали команду >>24 ... Jan 26 2013, 21:35 Golikov A. ну все я понял в чем маза.
это короче разница та... Jan 26 2013, 21:44 _Pasha Цитата(Golikov A. @ Jan 27 2013, 01:44) С... Jan 26 2013, 21:59 Golikov A. Один раз вспоминается был проект где надо было сил... Jan 26 2013, 22:08 _Pasha Цитата(Golikov A. @ Jan 27 2013, 02:08) Ф... Jan 26 2013, 22:57 Golikov A. если упростить архиватор, и скармливать ему линейн... Jan 26 2013, 23:42 _Pasha Цитата(Golikov A. @ Jan 27 2013, 03:42) е... Jan 27 2013, 00:50  HHIMERA Цитата(_Pasha @ Jan 27 2013, 04:50) В раб... Jan 27 2013, 09:10 AlexandrY Цитата(_Pasha @ Jan 26 2013, 13:15) От пр... Jan 27 2013, 09:46 _Pasha Цитата(HHIMERA @ Jan 27 2013, 13:10) Лучш... Jan 27 2013, 09:55 khach Обычно в одном куске кода работаем с одной перифер... Jan 27 2013, 10:05
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|