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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> STM3210X_LD_VL, табличная инициализация периферии
AHTOXA
сообщение Jan 26 2013, 20:43
Сообщение #31


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(ReAl @ Jan 27 2013, 02:37) *
И ещё команда записи 1-ки (вместе с командой записи 0 полезны для bit-band области).
Ну и подэкономить можно на вариации аргумента для записи uint8_t/uint16_t/uint32_t. Только это все интерпретатор утолщает, дольше ждать, когда прибыль пойдёт.

Да, тут так сразу не угадаешьsm.gif Думаю, после пары-тройки байтовых команд уже будет выигрыш от спец-варианта.

Цитата(ReAl @ Jan 27 2013, 02:37) *
А у CM0 обращение по невыровненному бывает? А то ведь это имеет смысл для мелких кристаллов.

STM3210X_LD_VL - это M3 всё же. Да и вообще, Паша утоптал команду в адрес (я написал, а потом таки удосужился скачать и посмотреть предмет обсуждения :-) )


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jan 26 2013, 20:45
Сообщение #32


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(ReAl @ Jan 27 2013, 00:37) *
Надо уменьшать интерпретатор :-)
Ради такого дела можно и на асме выписать :-)

Или switch заменить на массив меток, привязамшись к GCC sm.gif
Или просто лишние сущности выкинуть: чтение из порта и запись в переменную по указателю и по дескриптору, уже легче станет.
ps
Физика жанра:
вот я сейчас пишу одну штучку, дык там надо вначале по ресету твердо назначить некоторые пины в неактивное состояние, чтобы не бросать силовой модуль, потом уже строить клоки, потом вернуться к пинам, кой-чего переключить на ацп, потом слегка протестировать окружающую обстановку, а потом еще раз вернуться к пинам а закончить инит. Пока пишу традиционно, чтобы иметь отправную точку.

Сообщение отредактировал _Pasha - Jan 26 2013, 21:01
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jan 26 2013, 20:55
Сообщение #33


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Хоть плачьsm.gif...


стандартный вариант
в регистр записывается адрес
в регистр записываются данные
сохраняются данные по адресу

интерпритаторый варинат
выбирается команда-адрес
выбираются данные

проводиться декодировка команды и вызов функции сохранения данных по адресу

сохраняются данные по адресу

декодировка - это одна функция ее не считаем, это постоянная издержка которая размажется на кучу команд и пропадет.

Но сохранения данных по адресу остается, данные в регистр все равно должны попасть, и выборка команды и данных тоже остается и вроде они занимают столько же сколько сохранения адреса и данных в стандартном варианте...

чего я не понимаюsm.gif?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jan 26 2013, 20:58
Сообщение #34


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(Golikov A. @ Jan 27 2013, 02:55) *
чего я не понимаюsm.gif?

Того, что интерпретаторный вариант делается в цикле, он один на всю прошивку.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jan 26 2013, 21:04
Сообщение #35


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



код команды грузить же все равно надо?
данные грузить все равно же надо?

или играют на том что для короткого кода команды можно за одну загрузку несколько команд считать?
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jan 26 2013, 21:12
Сообщение #36


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(Golikov A. @ Jan 27 2013, 00:04) *
код команды грузить же все равно надо?
данные грузить все равно же надо?

или играют на том что для короткого кода команды можно за одну загрузку несколько команд считать?

А Вы еще забыли про настройку адреса и stubs.
А в сабже стубов нету! yeah.gif
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jan 26 2013, 21:15
Сообщение #37


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Можете расписать что происходит при записи допустим 3 регистров. Я правда очень хочу понять...

Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jan 26 2013, 21:18
Сообщение #38


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(Golikov A. @ Jan 27 2013, 00:15) *
Можете расписать что происходит при записи допустим 3 регистров. Я правда очень хочу понять...

Не пойму, применительно к сабжу?
непонимание, оказывается, заразно. sm.gif
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jan 26 2013, 21:23
Сообщение #39


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



ну да естественно как виртуальная машина обрабатывает 3 записи в регистр.
естественно схематично
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jan 26 2013, 21:35
Сообщение #40


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Выбрали запись.
Декодировали команду >>24 &0x0F
Сделали нужные преобразования типов - храним варианты: волатильный адрес, и данные - либо непосредственные либо это указатель.
Дальше switch на допустимые команды
Дальше инкремент указателя и заново.

Условие останова - равенство нулю поля, в которое зашита команда, т.к. это адрес периферии, заведомо не нуль.
Остальное можно почитать из текста в первом посте.

Сообщение отредактировал _Pasha - Jan 26 2013, 21:36
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jan 26 2013, 21:44
Сообщение #41


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



ну все я понял в чем маза.

это короче разница такая же как между

int arr[3];

arr[0]=0;
arr[1]=1;
arr[2]=2;

и

for(int i=0;i<3;i++)
arr[i] = i;



Спасибо за интересный опыт. Чет я правда долго втыкал в фактически очевидные вещи... wink.gif
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jan 26 2013, 21:59
Сообщение #42


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(Golikov A. @ Jan 27 2013, 01:44) *
Спасибо за интересный опыт.

Пожалуйста. Но это только начало. Топтать этих два uint32_t нужно обязательно, к вечеру уже домедитировался я sm.gif
Только без внешних средств это невозможно, иначе текст превратится в новояз, из которого совсем ничего не понятно.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jan 26 2013, 22:08
Сообщение #43


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Один раз вспоминается был проект где надо было сильно уменьшить код, правда для передачи по в то время медленным линиям связи
В проце был написан разархиватор зип, поскольку алгоритм разархивирования известен, на компьютере прошивку архивировали зипом, слали, там она распаковывалась и работала.

Фактически вы делаете тоже самое, так что может имеет смысл не придумывать свой РИСК язык, а тупо заархивировать нормальный бинарик, а на проце его распаковывать и выполнять?
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jan 26 2013, 22:57
Сообщение #44


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(Golikov A. @ Jan 27 2013, 02:08) *
Фактически вы делаете тоже самое, так что может имеет смысл не придумывать свой РИСК язык, а тупо заархивировать нормальный бинарик, а на проце его распаковывать и выполнять?

К нему еще памяти оверлейной надо отъесть из ОЗУ. Тоже как-то... и кучей ничего не сделаешь, потому что относительных переходов не будет... тупо фиксированный буфер. Идея хорошая, но как-то не знаю пока.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jan 26 2013, 23:42
Сообщение #45


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



если упростить архиватор, и скармливать ему линейные куски кода, то вполне возможно.

ну тогда я бы написал "компилятор", который в препроцесинге превращал бы читаемый сишный код, в ваш сокращенный, иначе это реально будет адsm.gif, особенно если сделаете команды переменной длинны
Go to the top of the page
 
+Quote Post

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

 


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


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