|
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, 20:16
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(Golikov A. @ Jan 26 2013, 22:25)  Так может просветите? Как и зачем автор собирается использовать спец функцию которая ухудшает читабельность? Наверное правильнее сказать записывает другими словами те же действия? Попутно узрел еще одну перспективу. Дело в том, что если я на птичьем языке буду описывать действия, относящиеся к инициализации, а их немного, будет проще перейти на переменную длину псевдокоманд, поскольку для него нужна тулза, собирающая коллекцию адресов, данных и масок и формирующая их массив, который не будет более 256 элементов, типа словаря в архивном файле. Естественно, завязываться на Си-синтаксис никто не будет. А так - красота. Кстати, COG кто-нить пользует? Цитата(Golikov A. @ Jan 27 2013, 00:14)  а не получиться ли так что передать 2 слова + место занятое этими 2 словами в функцию записи данных в регистр будет больше чем просто записать данные в регистр пятью командами? Сейчас выигрыш небольшой, скачайте посмотрите. Но я только сегодня этим позанимался.
|
|
|
|
Сообщений в этой теме
_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 Подобным образом (парами адрес-данные в собираемой... Jan 26 2013, 14:01 _Pasha Цитата(ReAl @ Jan 26 2013, 18:01) (чего н... Jan 26 2013, 14:12  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   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 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
|
|
|