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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Программное разделение, GSM и GPS
sobr
сообщение Jul 12 2013, 00:00
Сообщение #16


Знающий
****

Группа: Свой
Сообщений: 926
Регистрация: 18-01-07
Пользователь №: 24 552



Цитата(_Артём_ @ Jul 12 2013, 03:11) *
И какой функционал у таких железок?

Если нужно GSM/SMS/CSD/GPRS/...GPS + ещё чего-нибудь, то 32К запросто может не хватить. Только если очень простые функции нужны тогда хватит.

Все, что вы перечислили, плюс работа с сетью различных устройств через юарт по своему протоколу, впритык влезло в 32К. Я считаю, что это очень не мало. В вашем случае (влезает только printf) надо просто взять printf поменьше. sm.gif
Go to the top of the page
 
+Quote Post
firew0rker
сообщение Jul 12 2013, 02:22
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 206
Регистрация: 11-07-12
Из: Новосибирск
Пользователь №: 72 716



Цитата(CADiLO @ Jul 11 2013, 20:47) *
Хм.... Это что ж туда запихивать то собрались ? Операционку ???

Народ по сей день на PIC18 да PIC24 с 32К флеша нормальные железки делает....

Мне удалось реализовать анемометр на PIC16F1827 c его 4Kслов Flash.

Описание Анемометра с передачей данных по каналу GSM

1. Замеры.
- скорость ветра
- направление ветра
- температура
- расстояние от датчиков до Анемометра до 50м.

2. Регулируемые параметры
2.1. локально, записываются на SIM КАРТУ
- Телефон админа (с которого могут производиться настройки)
- Параметры соединения с оператором GSM по каналу GPRS
- Параметры для доступа к WEB – серверу
2.2. дистанционно SMS-сообщениями
- Перезагрузка устройства (комманда)
- Интервал накопления оценки

3. Выводимые данные на сервер
3.1. Скорость ветра
- Максимальная за интервал
- Средняя за интервал
- Минимальная за интервал
3.2. Температура средняя за интервал
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jul 12 2013, 04:54
Сообщение #18


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(sobr @ Jul 12 2013, 03:00) *
Все, что вы перечислили, плюс работа с сетью различных устройств через юарт по своему протоколу, впритык влезло в 32К. Я считаю, что это очень не мало. В вашем случае (влезает только printf) надо просто взять printf поменьше. sm.gif


Работа ссетью в 32 кБ?
Это будет что угодно но не сеть.


Цитата(firew0rker @ Jul 12 2013, 05:22) *
Мне удалось реализовать анемометр на PIC16F1827 c его 4Kслов Flash.

Описание Анемометра с передачей данных по каналу GSM...


Получить данные с АЦП и послать по AT командам в модуль это и 1 Kбайт не займет.
А чем заполнены остальные 3 кБ?
Почти уверен, что тем самым printf. wink.gif
Go to the top of the page
 
+Quote Post
firew0rker
сообщение Jul 12 2013, 05:33
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 206
Регистрация: 11-07-12
Из: Новосибирск
Пользователь №: 72 716



Цитата(AlexandrY @ Jul 12 2013, 11:54) *
Получить данные с АЦП и послать по AT командам в модуль это и 1 Kбайт не займет.
А чем заполнены остальные 3 кБ?
Почти уверен, что тем самым printf. wink.gif

Много занимают строковые константы АТ-команд в виде retlw. Компилятор генерит громоздкий код для арифметики с типом long и, что странно, функции _delay.
Не использую printf, он не влез. Пришлось писать функции типа таких:
Код
//converts val to string of width digits.
//returns pointer to 0-terminating of buf
//if width is less than neccessary, string will be truncated at left!
char *
utoaa(char * buf, unsigned val, unsigned char width)
{
    char        c;
    char *    cp;

    buf += width;
    cp = buf;
    *buf-- = 0;
    do {
        c = val % 10;
        val /= 10;
        if(c >= 10)
            c += 'A'-'0'-10;
        c += '0';
        *buf-- = c;
        width--;
    } while(val && width);
    while(width--) *buf-- = '0';
    return cp;
}

char *
itoaa(char * buf, int val, unsigned char width)
{
    if(val < 0) {
        *buf++ = '-';
        val = -val;
    }
    return utoaa(buf, val, width);
}

Go to the top of the page
 
+Quote Post
megajohn
сообщение Jul 12 2013, 06:01
Сообщение #20


Профессионал
*****

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



Цитата(firew0rker @ Jul 12 2013, 09:33) *
Компилятор генерит громоздкий код для арифметики с типом long


Есть такая замечательная рекламная картинка, которая показывает как кортексы уделывают 8-битники

Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jul 12 2013, 06:17
Сообщение #21


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(firew0rker @ Jul 12 2013, 08:33) *
Много занимают строковые константы АТ-команд в виде retlw. Компилятор генерит громоздкий код для арифметики с типом long и, что странно, функции _delay.
Не использую printf, он не влез. Пришлось писать функции...


Дела не меняет. Весь ли printf использовался или по кускам, факт что стандартные библиотеки С-и и другие либы промежуточного слоя занимают большую часть кода.
И вот для действительно развитых M2M и IoT приложений легко прикинуть сколько надо памяти программ не вникая особенно в функциональность дивайса.
Так вот для работы с облачными сервисами только парсер JSON или или уж подавно XML может съесть до 100 кБ.

SMS и доморощенные серверы это все таки уже в прошлом. Чтобы продвигать сейчас такие примитивные решения продавцам надо платить в несколько раз больше чем разработчикам. Вопрос уже не технический.

И функционал GPS, GSM, IO разделять нужно исключительно средствами RTOS.
Кстати не меньше пары десятков килобайт тоже займет. wink.gif



Цитата(megajohn @ Jul 12 2013, 09:01) *
Есть такая замечательная рекламная картинка, которая показывает как кортексы уделывают 8-битники


Кортексы тоже друг другу не равны.
Скажем серия Kinetis умеет делать аппаратное усреднение отсчетов АЦП.
Т.е. еще сжать и последующий код той самой фильтрации.
Go to the top of the page
 
+Quote Post
alexdos
сообщение Jul 12 2013, 06:44
Сообщение #22


Местный
***

Группа: Участник
Сообщений: 339
Регистрация: 10-07-08
Из: Херсон
Пользователь №: 38 856



Сколько программистов, и столько мнений. И это хорошо. Системы получаются разные. Выживают наиболее успешные. Что поделать, естественный отбор.
Go to the top of the page
 
+Quote Post
rat
сообщение Jul 12 2013, 08:13
Сообщение #23


Местный
***

Группа: Свой
Сообщений: 497
Регистрация: 9-06-05
Из: Новосибирск
Пользователь №: 5 852



Проект на STM32F105, иногда подвисает, судя по всему обработчики прерываний от обоих уартов чего-то делят, потому и спросил про приоритеты прерываний.
Go to the top of the page
 
+Quote Post
Aner
сообщение Jul 12 2013, 09:11
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



не наблюдал такое, разве что в коде недосмотрели ...ну или в прокладке.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jul 12 2013, 09:21
Сообщение #25


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Aner @ Jul 12 2013, 12:11) *
не наблюдал такое, разве что в коде недосмотрели ...ну или в прокладке.


Есть в STM32 такая беда. Вызвана отсутствием FIFO на UART.
При определенном построении ISR могут быть зависания.
Go to the top of the page
 
+Quote Post
Aner
сообщение Jul 12 2013, 09:36
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



Так это года как 3-4 назад было выявлено с первыми сотыми, и решений несколько было предложено.
Go to the top of the page
 
+Quote Post
rat
сообщение Jul 12 2013, 09:42
Сообщение #27


Местный
***

Группа: Свой
Сообщений: 497
Регистрация: 9-06-05
Из: Новосибирск
Пользователь №: 5 852



Цитата(Aner @ Jul 12 2013, 16:36) *
Так это года как 3-4 назад было выявлено с первыми сотыми, и решений несколько было предложено.


А можно поподробнее?
Go to the top of the page
 
+Quote Post
Frolov Kirill
сообщение Jul 12 2013, 10:13
Сообщение #28


Местный
***

Группа: Участник
Сообщений: 212
Регистрация: 2-02-11
Пользователь №: 62 643



Цитата(rat @ Jul 11 2013, 14:49) *
День добрый. В устройстве (трекер) есть несколько программных единиц: работа с GSM, GPS, опросы IO и т.д. Как правильно разделять работу с GSM и GPS в контроллере? Приоритетами прерываний, по времени? Кто как решает эту задачу?


Не понял вопроса. Звучит он скорей "какова архитектура программ выполняющих параллельно множество задач". Вообще ответ есть в статье "Embedded system" в Wikipedia. Подходов несколько, суть одна. Последовательно исполняются разные программные модули обслуживающие разные задачи. Вопрос, чем эта последовательность определяется. От программиста (super/big loop), до RTOS. Не обязательно RTOS с вытеснением, можно и кооперативная. Впрочем и RTOS не обязательна. Если RTOS (с отдельными стеками для каждой задачи) нет, то отдельные модули строятся так, что в какой-то переменной хранят своё состояние (google://Шалыто), например. Может быть событийно-управляемая архитектура, когда возникновение каких-либо событий приводит к запуску их обработчиков (в которых могут быть те же автоматы): это лучше чем big loop, потому, что если последний достаточно big, то слишком много процессорного времени тратится на ненужные проверки условий и, кроме того, с big loop трудно перевести процессор в спящий режим когда не нужно. Вообще если параллельных задач очень много, то подход с RTOS не реализуем без костыпей и подпорок -- не хватит памяти (стек и т.п.) на каждую. Всё сведётся скорей к событийно-ориентированному программированию (именно такая модель применяется в GUI, где тоже есть множество относительно независимых "задач" работающих параллельно). А RTOS скорей полезна для создания небольшого количества изолированных задач, причём именно вытесняющая RTOS. В основном ввиду возможности вытеснения. Т.к. рано или позвно в событийно-ориентированной архитектуре найдутся задачи требующие малого времени реакции и другие, обрабатываемые слишком медленно.


Цитата(_Артём_ @ Jul 11 2013, 19:22) *
Видел железки с 128/256/512 КБ флеша, но что можно на 32КБ сделать? Только printf туда и поместится и ничего больше...


Вы новичёк и недоучка, вам сейчас объяснят. Профессионалы пишут на ассемблере, а C для ламиров.



Цитата(megajohn @ Jul 12 2013, 10:01) *
Есть такая замечательная рекламная картинка, которая показывает как кортексы уделывают 8-битники


Этот ваш кортекс для ламиров и недоучек ниасиливших ассемблер из 35 простых инструкций, которые легко выучить ©
Go to the top of the page
 
+Quote Post
vassabi
сообщение Jul 12 2013, 11:00
Сообщение #29


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

Группа: Свой
Сообщений: 156
Регистрация: 18-02-13
Из: Киев
Пользователь №: 75 678



Цитата('Frolov Kirill')
Вы новичёк и недоучка, вам сейчас объяснят. Профессионалы пишут на ассемблере, а C для ламиров.

Цитата('Frolov Kirill')
Этот ваш кортекс для ламиров и недоучек ниасиливших ассемблер из 35 простых инструкций, которые легко выучить ©

О, пришел Frolov, ща начнется (уже началось)...
Kirill, у вас по ходу наклонности проповадника. Никогда не думали, что другие тоже умеют "программировать", а некоторые даже лучше вас и, самое главное, не так как вы?


Сообщение отредактировал vassabi - Jul 12 2013, 11:13
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jul 12 2013, 11:35
Сообщение #30


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Frolov Kirill @ Jul 12 2013, 13:13) *
Вообще если параллельных задач очень много, то подход с RTOS не реализуем без костыпей и подпорок -- не хватит памяти (стек и т.п.) на каждую. Всё сведётся скорей к событийно-ориентированному программированию (именно такая модель применяется в GUI, где тоже есть множество относительно независимых "задач" работающих параллельно). А RTOS скорей полезна для создания небольшого количества изолированных задач, причём именно вытесняющая RTOS.


Интересное мнение. На каком опыте основано?
Какую RTOS применяли и для каких задач?
И сколько это "небольшое количество изолированных задач"?

50 задач, например, это много или мало?

Потом с трудом представляю себе большое количество одновременно выполняемых задач которым бы не требовался свой стек.
Можете хоть умозрительный пример привести?
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 Текстовая версия Сейчас: 21st June 2025 - 18:07
Рейтинг@Mail.ru


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