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

 
 
> Разработать устройство, Ищу разработчика для создания устройств
Macslim
сообщение Sep 15 2018, 14:04
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 15-09-18
Пользователь №: 107 507



Доброго времени суток!

Ищу разработчика для разработки устройства, 4х канальный релейный блок.
Нужно выполнить следующие работы:
- разработать схему
- разработать плату
- подобрать компоненты
- разработать корпус
- сделать прототип
- написать инициализирующий слой для периферии (инициализация CAN, входов и выходов. Прошивку писать не надо), среда разработки Keil

Требования к МК.
- stm32хх
- ОЗУ не менее 20 кб
- Flash не менее 64 кб
- Наличие CAN интерфейса
- Крайне желательно наличие EEPROM не менее 256 байт

Требования к готовому устройству.
- CAN интерфейс
- 4 реле 10А 250В. Нагрузка может быть моторы, лампы, домашние приборы. Крайне важно чтобы реле не "залипали".
- 1 светодиод для индикации состояния прибора
- 1 кнопка, будет использоваться для перевода состояния устройства или сброса устройства.
- Питание устройства от 24 вольт
- Готовое устройство на DIN рейку
- Клеммы с болтовым зажимом

Для связи: телергамм @macslim
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MAVR
сообщение Sep 16 2018, 00:00
Сообщение #2





Группа: Участник
Сообщений: 7
Регистрация: 29-08-18
Пользователь №: 107 111



Корпус под DIN-рейку разрабатывать не нужно, продаются готовые.
Питание внешнее?
Реле можно использовать твердотельные, уж точно не "залипнет"
Проц. можно использовать попроще.
avm0465@inbox.ru
Go to the top of the page
 
+Quote Post
Macslim
сообщение Sep 16 2018, 06:01
Сообщение #3





Группа: Новичок
Сообщений: 4
Регистрация: 15-09-18
Пользователь №: 107 507



Цитата(MAVR @ Sep 16 2018, 01:00) *
Корпус под DIN-рейку разрабатывать не нужно, продаются готовые.
Питание внешнее?
Реле можно использовать твердотельные, уж точно не "залипнет"
Проц. можно использовать попроще.
avm0465@inbox.ru

Корпус можно и готовый.
Питание внешнее.
Нужно именно 20 кб ОЗУ и 64 кб Flash, так как будет обновление прошивки устройства по CAN протоколу. Если в будущем протокол будет менее требовательным к памяти, то проще заказать новое устройство с МК попроще.
e-mail: macslim[]mail.ru
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 16 2018, 06:42
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Macslim @ Sep 16 2018, 09:01) *
Нужно именно 20 кб ОЗУ и 64 кб Flash, так как будет обновление прошивки устройства по CAN протоколу.

Интересно - как это рассчитано? По какой формуле? wacko.gif
Go to the top of the page
 
+Quote Post
adnega
сообщение Sep 16 2018, 07:03
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(jcxz @ Sep 16 2018, 09:42) *
Интересно - как это рассчитано? По какой формуле? wacko.gif

Многовато.
У меня есть контроллер на STM32F042F4.
Распределение памяти такое:
- 5К - загрузчик;
- 10К - приложение;
- 1К - пользовательский скрипт.

Контроллер работает по CAN со своим протоколом. Можно обновлять прошивку, можно переписывать пользовательский скрипт.
Скрипты сложные, на основе графов. Выполняются параллельно. Много диагностических функций.
На борту 5 аналоговых входов, 7 дискретных выходов, 5 из который с ШИМ-управлением.

В загрузчике сейчас примерно 270 байт еще свободно. В приложении - чуть больше 900 свободных байт.
Код на Си без асм-вставок. Да, ОЗУ всего 6К.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 16 2018, 07:25
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(adnega @ Sep 16 2018, 10:03) *
Распределение памяти такое:
- 5К - загрузчик;
- 10К - приложение;
...
В загрузчике сейчас примерно 270 байт еще свободно. В приложении - чуть больше 900 свободных байт.

Когда устройство заранее разрабатывается с запасом по памяти (ОЗУ/flash) всего в 9% и даже в ~5%, то с большой вероятностью такое устройство придётся полностью переделывать в скором времени. Малейший баг, выявленный в будущем, который потребует небольшого увеличения прошивки, обернётся необходимостью переделки всей партии устройств. Или переписывания большой части кода на ассемблере. Тем более когда запас всего == 900байт, то даже если просто выйдет новая версия компилятора с новой стандартной библиотекой в его составе, то код может перестать влезать.
Обычно советуют оставлять запас 30%-50% вроде по флешь. На больших объёмах флешь запас можно уменьшить.
А такой малый запас - это уже ошибка проектирования архитектуры устройства.
Go to the top of the page
 
+Quote Post
adnega
сообщение Sep 16 2018, 07:51
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(jcxz @ Sep 16 2018, 10:25) *
Когда устройство заранее разрабатывается с запасом по памяти (ОЗУ/flash) всего в 9% и даже в ~5%, то с большой вероятностью такое устройство придётся полностью переделывать в скором времени.

Я написал все что надо, а потом дополнил тем, на что памяти хватило.
Есть несколько вариантов приложений с поддержкой ИК-пультов, датчиков температуры DS и т.п.
В одну прошивку все не влезает, но ключиками можно собрать прошивку под свою задачу и без
хлопот обновиться. Там где нужно ВСЕ, есть решение где есть все и куча памяти свободной.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Sep 16 2018, 09:23
Сообщение #8


Ally
******

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



Цитата(adnega @ Sep 16 2018, 10:51) *
Есть несколько вариантов приложений с поддержкой ИК-пультов, датчиков температуры DS и т.п.

И как потом, не тяжко поддерживать заросли веток?
Это как минимум добавляет рутины.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 16 2018, 09:56
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(AlexandrY @ Sep 16 2018, 12:23) *
И как потом, не тяжко поддерживать заросли веток?

Очень знакомая ситуация. На прошлой работе у нас был такой разработчик. biggrin.gif
Заложил МК с ресурсами по минимуму: "И так хватит, сейчас ведь влезает. Зато этот МК я хорошо знаю по прошлым проектам."
Но аппетит приходит во время еды: у заказчиков начали появляться хотелки, плюс - в ПО оказалось много багов, которые надо править. Ну и этому коллеге естественно ничего не оставалось делать как пойти по пути размножения веток версий прошивки для разных наборов программных хотелок и аппаратных исполнений устройства. В конце-концов дошло до того, что чтобы внести элементарную правку в код или поддержку новой простейшей фичи (которую мы добавляли в другие устройства за пару дней вместе с тестированием) он тратил на это по месяцу. Пока оптимизирует чтобы во флешь кое-как втиснуть, везде во все ветки прошивки внесёт, несколько раз переделает. Пока потом всё это оттестирует, найдёт все версии железа, которые надо протестить. Сидел ежедневно да самого вечера - перерабатывал каждый день: я приходил на работу - он уже там, уходил - он ещё там. biggrin.gif
И начальник его всё время шпынял - "как до сих пор не готово??!" biggrin.gif
Потом он уже признал свою ошибку, но сделать уже ничего было нельзя. Подшучивали над ним по этому поводу постоянно. В конце-концов он уволился. Хотя может конечно и не из-за этого...
Go to the top of the page
 
+Quote Post
adnega
сообщение Sep 16 2018, 10:55
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(jcxz @ Sep 16 2018, 12:56) *
Заложил МК с ресурсами по минимуму

ОЗУ 6К и ПЗУ 16К это минимум?
В эти объемы можно уложить нехилый функционал (пример я привел), а не то что 4 реле по CAN.
Я не знаю как ваши фирмы работают, но у нас есть пример: толстый контроллер на базе STM32F407VG.
На нем можем сделать все что угодно и нет никаких проблем с памятью, скорости разработки, отладки и т.п.
А есть задачки, для которых вполне хватает STM32F030K6 (причем основные расходы ПЗУ на шрифты).
Правда, затем заменили на STM32F051K8 именно из соображений, чтоб по памяти не упираться.
Зачем использовать дорогой, трудоемкий, габаритный контроллер, когда задачу прекрасно решает
мелкий во всех смыслах контроллер? Нужно понимать, что если мы не можем решить задачу на мелкоте, то
на фулфарше она решается гарантированно, поэтому развиваем оба. Кста, сейчас появился промежуточный
контроллер с плюсами обоих на STM32F030CC. По скорости разработки никогда описываемых вами ужасов не было,
типовая задачка занимает 2-4 часа вместе со сборкой стенда и документированием.

На той неделе был на совещании - предлагают мини-ПК в довесок к STM32 ставить, чтоб был WiFi, в устройстве типа,
получил-отправил пакет по CAN (авто-диагностика). Так что с оверхэдом у нас все в порядке wink.gif.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 16 2018, 11:24
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(adnega @ Sep 16 2018, 13:55) *
ОЗУ 6К и ПЗУ 16К это минимум?

Вы передёргиваете. Позволю себе напомнить:
Цитата(adnega @ Sep 16 2018, 10:03) *
Распределение памяти такое:
...
- 10К - приложение;
...
В приложении - чуть больше 900 свободных байт.

Итого: да - 16К - это слишком мало если из них свободных остаётся всего 900 байт (~5.5%).

Цитата(adnega @ Sep 16 2018, 13:55) *
В эти объемы можно уложить нехилый функционал (пример я привел), а не то что 4 реле по CAN.

Я не знаю какой функционал туда можно уложить и мне это неинтересно. Я говорил про ваш случай, когда оставлено всего 5.5% свободной флешь.

Цитата(adnega @ Sep 16 2018, 13:55) *
Нужно понимать, что если мы не можем решить задачу на мелкоте, то
на фулфарше она решается гарантированно, поэтому развиваем оба.

Из этих слов видно, что Вы ещё не имели дела с серийным производством и с множеством заказчиков. С тех.поддержкой и сопровождением этих заказчиков. Да если ещё проект не один, а их множество уже сделанных. Иначе бы уже наелись проблем с поддержкой этого зоопарка. Ну тогда жизнь - она со временем научит... шишками laughing.gif

Цитата(adnega @ Sep 16 2018, 13:55) *
типовая задачка занимает 2-4 часа вместе со сборкой стенда и документированием.

ну-ну... типовая мигалка лампочками biggrin.gif
А бывают задачки в МБ-ы исходного кода. Своего. И файлов - под сотню. Тогда, только чтобы понять в каком модуле глюк, бывает нужно несколько дней.
Go to the top of the page
 
+Quote Post
adnega
сообщение Sep 16 2018, 15:08
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(jcxz @ Sep 16 2018, 14:24) *
Из этих слов видно, что Вы ещё не имели дела с серийным производством и с множеством заказчиков.

С чего вы взяли? С того, что без шишек умею работать?
Контроллеры выпускаются серийно с конца 2011 года.
Примерно 100 штук ежемесячно. Изделия очень разные, Заказчиков множество.
В техподдержке один человек, который часто привлекается к другим задачам.

Конкретно за STM32F042F4 скажу, что это делал себе для умного дома.
Использую одну прошивку с базовым функционалом. Один работает в подсветке кухни,
второй рулит санузлом. Логика элементарная: плавно включить-выключить свет,
по датчику дверцы или движению. При этом по CAN можно узнать и температуру МК,
и напряжение питания, максимальную глубину стека, uptime, хеши объектов и т.п.
Для решения основной задачи это все не нужно, и добавил только потому, что место оставалось.
За вечер превратил аналогичный контроллер в 9-канальный измеритель температуры.
По CAN рассылает сообщения с температурой датчиков, ID которых заданы в энергонезависимых
переменных. Еще делал какую-то прошивку для управления кондиционером, а другую со сбором
показаний весов с ИК-выходом, но подробностей уже не помню.
Есть STM32F042F6 с 32К ПЗУ, можно их поставить, но зачем, если и в 16К все влезает?
Сенсорные выключатели я делаю на STM32F042K6, дык, фулфарш-прошивка занимает около 11К,
при выделенных 20К. Там функционал тот же, только всего больше, плюс обработка емкостных сенсоров.
Самый крутой контроллер для умного дома на STM32F407 использует 42К из выделенных 128К.
По функционалу там и Ethernet, и uSD, дисплей, GPS для часов, датчики давления/влажности/температуры,
сервер времени и конфигураций в добавку ко всему ранее сказанному.
Я не могу придумать код на 64К - факт, подтвержденный временем.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 16 2018, 15:27
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(adnega @ Sep 16 2018, 18:08) *
Я не могу придумать код на 64К - факт, подтвержденный временем.

Ну добавьте в это фарш HTTP-сервер с парой картинок и... придумалось biggrin.gif
Go to the top of the page
 
+Quote Post
adnega
сообщение Sep 16 2018, 18:08
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(jcxz @ Sep 16 2018, 18:27) *
с парой картинок

Картинки, шрифты, звуковые файлы, обновления прошивок, пользовательские скрипты - это все лежит на uSD-карте.
Я говорил про сам код - 64К хватит каждому wink.gif

Цитата
У меня тут близится к релизу простой загрузчик по UART и по CAN, он уже занимает 70 КБ с максимальной оптимизацией по размеру.

Для простого что-то многовато. У меня загрузчик и образы расшифровывает, и CRC32 считает, и в приложение функции экспортирует.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Sep 16 2018, 19:14
Сообщение #15


Ally
******

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



Цитата(adnega @ Sep 16 2018, 21:08) *
Для простого что-то многовато. У меня загрузчик и образы расшифровывает, и CRC32 считает, и в приложение функции экспортирует.

Да действительно расшифровка каким нибудь блочным алгоритмом и CRC32 занимают не больше килобайта. Это мелочи.
CRC с аппаратным ускорением занимает пару десятков команд, не стоит даже упоминания.
У меня кстати MD5 считает, это надежнее.
Но я могу и SHA вставить. А могу и весь TLS стек с RSA и ассиметричным шифрованием. Это возможности фреймворка.
Но размер еще увеличится. Размер должен быть большим. Размер есть показатель крутизны кода. cool.gif


Цитата(jcxz @ Sep 16 2018, 21:58) *
И получаю == 70264 байт флеша при полной оптимизации IAR (поставил даже оптимизацию по размеру специально).

Что-то очень мало.
В аналогичном приложении с мотором, 9D IMU сенсором, без LCD и без GPS, но с MQX, BT, USB и FAT у меня занимает 209 КБ.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 16 2018, 19:42
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(AlexandrY @ Sep 16 2018, 22:14) *
В аналогичном приложении с мотором, 9D IMU сенсором, без LCD и без GPS, но с MQX, BT, USB и FAT у меня занимает 209 КБ.

ну - у меня FAT и USB-стека всё-таки нет; да и uCOS думаю будет полегче MQX.
Зато в другом проекте с LCD(без картинок, только кучка шрифтов) + WiFi (со всем что поверх оного) + универсальный ИК-приёмник с обучением + MP3-декодер + AAC+-декодер + GUI довольно развесистый + ещё кучка всякой мелочи - при полной оптимизации уже == 226200 байт. И это при том, что довольно значительная часть MP3- и AAC-декодеров - написана на асме.
Так что в 42КБ ув. adnega как-то верится с трудом. Ну если только он не целиком на асме писал. biggrin.gif
Go to the top of the page
 
+Quote Post
adnega
сообщение Sep 17 2018, 04:17
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(jcxz @ Sep 16 2018, 22:42) *
Так что в 42КБ ув. adnega как-то верится с трудом.

Все самописное. Ethernet только IP и UDP, FAT только чтение, никакой ОС нет.
Вроде, ESP8266 должен еще работать.

CODE
.isr_vector 0x0000000008040000 0x188
0x0000000008040000 . = ALIGN (0x4)
*(.isr_vector)
.isr_vector 0x0000000008040000 0x188 ./obj_sw/startup_stm32f407.o
0x0000000008040000 vectors
0x0000000008040188 . = ALIGN (0x4)

.flashtext 0x0000000008040188 0x0
0x0000000008040188 . = ALIGN (0x4)
*(.flashtext)
0x0000000008040188 . = ALIGN (0x4)

.text 0x0000000008040188 0xabdc
0x0000000008040188 . = ALIGN (0x4)
*(.text)
.text 0x0000000008040188 0xecc ./obj_sw/main.o
0x0000000008040188 cb_on_item
0x0000000008040254 on_fat_search_event
0x0000000008040340 cb_init_search
0x000000000804038c on_fat_init_event
0x000000000804049c on_fat_open_update_event
0x0000000008040678 on_read
0x0000000008040760 on_init_search
0x00000000080407d0 on_init
0x00000000080408a4 on_fat_read_update_event
0x0000000008040cec i2c_delay
0x0000000008040d02 i2c_write
0x0000000008040d74 i2c_read
0x0000000008040e04 i2c_start
0x0000000008040e44 i2c_stop
0x0000000008040e80 oled_init
0x0000000008040fb8 oled_set_page_address
0x0000000008040fdc oled_set_column_address
0x0000000008041010 oled_picture
.text 0x0000000008041054 0x50 ./obj_sw/startup_stm32f407.o
0x0000000008041054 Reset_Handler
.text 0x00000000080410a4 0xf40 ./obj_sw/command.o
0x00000000080410a4 func_reboot
0x00000000080410c4 func_sn
0x00000000080410dc func_wifi_led
0x00000000080410e8 func_wifi_id
0x00000000080410ea func_rtc_get_param
0x0000000008041100 func_rtc_get_param_off
0x0000000008041110 func_who
0x000000000804113c func_help
0x00000000080411a4 func_file
0x00000000080411c8 func_get_volume
0x0000000008041240 func_can_stat
0x0000000008041308 func_rtc_list
0x0000000008041394 func_param
0x0000000008041614 func_mac
0x0000000008041718 func_ip
0x00000000080417cc func_mask
0x0000000008041880 func_gw
0x0000000008041934 func_volume
0x00000000080419a8 func_name
0x0000000008041a0c func_set_time
0x0000000008041a38 func_rtc_id
0x0000000008041cfc func_rtc_set_id
0x0000000008041d50 func_rtc_set_param
0x0000000008041dae func_rtc_update
0x0000000008041e2c func_rtc_prog_write
0x0000000008041eac func_rtc_prog_read
0x0000000008041f08 console_command_mainloop
.text 0x0000000008041fe4 0xa6c ./obj_sw/define.o
0x0000000008041fe4 set_uart_txeie
0x0000000008041ff0 set_pin
0x00000000080420b8 set_volume
0x000000000804212c every2bit
0x000000000804214c con_ver
0x000000000804218c con_per
0x00000000080421ec con_datetime
0x0000000008042354 con_uptime
0x00000000080423cc rtc_get_datetime
0x0000000008042470 rtc_set_datetime
0x000000000804257c tick
0x0000000008042598 print_fault
0x00000000080426b4 rtc_on_sync
0x0000000008042858 rtc_timer
.text 0x0000000008042a50 0x4e8 ./obj_sw/init.o
0x0000000008042a50 init_ETH
0x0000000008042b64 SDIO_power
0x0000000008042bd4 init_SDIO
0x0000000008042bf0 init_DAC
0x0000000008042bfc init_TIMER3
0x0000000008042c1c init_SYSTEM
0x0000000008042c5c init_GPIO
0x0000000008042da4 init_SYSTICK
0x0000000008042dc8 init_USART1
0x0000000008042df4 init_USART2
0x0000000008042e1c init_CLK
0x0000000008042e36 init_NVIC
0x0000000008042eb4 init_RCC
0x0000000008042ed4 init_RTC
.text 0x0000000008042f38 0x102c ./obj_sw/isr.o
0x0000000008042f38 update_timer
0x000000000804357c CAN1_TX_IRQHandler
0x000000000804360c CAN1_RX0_IRQHandler
0x00000000080436b4 EXTI4_IRQHandler
0x000000000804380c ETH_IRQHandler
0x000000000804387c TIM3_IRQHandler
0x0000000008043898 wifi_timer
0x0000000008043c48 USART2_IRQHandler
0x0000000008043cb4 DoRCCStateCommand
0x0000000008043d44 RCC_IRQHandler
0x0000000008043d90 NMIException
0x0000000008043dbc USART1_IRQHandler
0x0000000008043e2c rcc_timer
0x0000000008043e8c workled_blink
0x0000000008043f28 SysTickHandler
.text 0x0000000008043f64 0x538 ./obj_sw/serial_port.o
0x0000000008043f64 sp_init
0x0000000008043fb6 sp_tx_push
0x0000000008043fde sp_tx_pop
0x000000000804401e sp_str
0x0000000008044034 sp_start
0x000000000804404c sp_txen_timer
0x000000000804407e sp_rx_push
0x00000000080440a6 sp_rx_pop
0x00000000080440e6 sp_hex
0x0000000008044118 sp_dec
0x0000000008044178 sp_udec
0x00000000080441c8 command_exec
.text 0x000000000804449c 0x3c ./obj_sw/exception.o
0x000000000804449c HardFaultException
0x00000000080444a8 my_memcpy
0x00000000080444c0 rbit8
0x00000000080444c8 get2pow
0x00000000080444d2 getIPSR
.text 0x00000000080444d8 0xdc8 ./obj_sw/sdio.o
0x00000000080444d8 con_sdio_ans
0x000000000804455c SDIO_Test
0x0000000008044594 SDIO_Send
0x00000000080445bc SDIO_Read
0x000000000804466c SDIO_Delay
0x0000000008044684 SDIO_IRQHandler
0x00000000080450dc SDIO_Init
0x0000000008045134 SDIO_Write
0x0000000008045204 SDIO_CardPresend
0x0000000008045214 SDIO_timer
.text 0x00000000080452a0 0xb6c ./obj_sw/fat.o
0x00000000080452a0 fat_open_async_on_item
0x00000000080452c0 fat_cluster_to_sector
0x00000000080452e0 fat_fs_info_test
0x0000000008045314 fat_MBR_test
0x000000000804535c fat_fill
0x0000000008045464 fat_init_callback
0x000000000804550c fat_get_dir_item
0x0000000008045664 sd_read_async
0x0000000008045668 fat_item
0x00000000080456ec fat_search_callback
0x0000000008045918 fat_read_async_callback
0x0000000008045ab0 fat_init_async
0x0000000008045b10 fat_search_async
0x0000000008045bc0 fat_open_async_on_event
0x0000000008045c58 fat_open_async
0x0000000008045d10 fat_read_async
.text 0x0000000008045e0c 0x1e8 ./obj_sw/mstring.o
0x0000000008045e0c mmemset
0x0000000008045e1e mstrcmp
0x0000000008045e38 mstrcpy
0x0000000008045e4a mstrcat
0x0000000008045e66 mstrupr
0x0000000008045e82 mstrcmp_f
0x0000000008045ea4 mstrlen
0x0000000008045eb4 mstr2ip
0x0000000008045f22 mstradd_char
0x0000000008045f32 mstradd_int2
0x0000000008045f5c cp866_to_win1251
0x0000000008045fa2 unicode_to_win1251
.text 0x0000000008045ff4 0xa0 ./obj_sw/player.o
0x0000000008045ff4 player_irq
.text 0x0000000008046094 0x354 ./obj_sw/arp.o
0x0000000008046094 arp_send_request
0x0000000008046130 arp_send_answer
0x00000000080461c8 arp_init
0x00000000080461f8 arp_timer
0x0000000008046274 arp_find
0x00000000080462a8 arp_add
0x0000000008046350 emac_arp
.text 0x00000000080463e8 0x6ec ./obj_sw/emac.o
0x00000000080463e8 emac_init_tx
0x0000000008046404 emac_get_tx
0x0000000008046444 emac_send_tx
0x0000000008046474 emac_abort_tx
0x00000000080464a0 emac_send
0x0000000008046544 emac_rx_data
0x000000000804658c read_PHY
0x00000000080465b4 read_PHY_im
0x00000000080465c4 emac_timer
0x0000000008046a9c write_PHY
0x0000000008046ac0 write_PHY_im
.text 0x0000000008046ad4 0xbc ./obj_sw/icmp.o
0x0000000008046ad4 emac_icmp
.text 0x0000000008046b90 0x114 ./obj_sw/ip.o
0x0000000008046b90 emac_ip
0x0000000008046bcc ip_send
.text 0x0000000008046ca4 0x340 ./obj_sw/udp.o
0x0000000008046ca4 get_hex
0x0000000008046ce2 udp_fill
0x0000000008046d0c udp_send_data
0x0000000008046d94 emac_udp
.text 0x0000000008046fe4 0x420 ./obj_sw/nokia_1202.o
0x0000000008046fe4 nokia_1202_cs
0x0000000008046fe6 nokia_1202_send
0x0000000008046fe8 nokia_1202_set
0x0000000008047048 nokia_1202_init
0x000000000804713c nokia_1202_show_icon
0x00000000080471bc nokia_1202_str
0x00000000080472b4 nokia_1202_strto
0x00000000080473e4 nokia_1202_set_contrast
.text 0x0000000008047404 0x238 ./obj_sw/datetime.o
0x0000000008047404 datetime_init
0x0000000008047406 date_to_int
0x0000000008047438 int_to_time
0x000000000804745e int_to_date
0x00000000080474dc datetime_update
.text 0x000000000804763c 0x1034 ./obj_sw/can.o
0x000000000804763c can_message_load
0x00000000080476a4 can_pc_id
0x00000000080476a8 can_pc_conf
0x00000000080476ac can_pc_media
0x00000000080476b0 can_rtc_rt
0x00000000080476b4 can_rtc_id
0x00000000080476b8 can_rtc_media
0x00000000080476bc can_init_bus
0x000000000804776c can_init
0x00000000080477d4 can_start
0x0000000008047860 can_send
0x000000000804789c can_pc_rt
0x0000000008047924 can_rtc_conf
0x0000000008048640 can_exec
.text 0x0000000008048670 0x5c ./obj_sw/crc32.o
0x0000000008048670 crc32
0x0000000008048698 crc32_init
0x00000000080486a2 crc32_next
.text 0x00000000080486cc 0x44 ./obj_sw/irand.o
0x00000000080486cc rand_get
0x00000000080486e4 rand_init
0x00000000080486e8 rand_decode
*(.text.*)
.text.startup 0x0000000008048710 0x7e8 ./obj_sw/main.o
0x0000000008048710 main
*(.rodata)
.rodata 0x0000000008048ef8 0x10e ./obj_sw/command.o
0x0000000008048ef8 console_command_table
0x0000000008048fd8 s_undef
0x0000000008048ffd s_reset
.rodata 0x0000000008049006 0x94 ./obj_sw/define.o
0x0000000008049006 param_list
0x000000000804902c param_default
0x000000000804906c s_who
.rodata 0x000000000804909a 0x43 ./obj_sw/isr.o
0x000000000804909a GET_PAGE1
0x00000000080490bc GET_PAGE2
.rodata 0x00000000080490dd 0x11 ./obj_sw/serial_port.o
0x00000000080490dd Hex
*fill* 0x00000000080490ee 0x2
.rodata 0x00000000080490f0 0x14 ./obj_sw/emac.o
0x00000000080490f0 br_mac
0x00000000080490f8 br_ip
0x00000000080490fc zr_mac
.rodata 0x0000000008049104 0x7f0 ./obj_sw/font.o
0x0000000008049104 Font_Single
.rodata 0x00000000080498f4 0x400 ./obj_sw/crc32.o
0x00000000080498f4 crc_table
*(.rodata*)
.rodata.str1.1
0x0000000008049cf4 0x452 ./obj_sw/main.o
0x468 (size before relaxing)
.rodata.str1.1
0x000000000804a146 0x3b2 ./obj_sw/command.o
0x3c6 (size before relaxing)
.rodata.str1.1
0x000000000804a4f8 0x112 ./obj_sw/define.o
0x11c (size before relaxing)
.rodata.str1.1
0x000000000804a60a 0x1d8 ./obj_sw/isr.o
0x1f6 (size before relaxing)
.rodata.str1.1
0x000000000804a7e2 0x282 ./obj_sw/sdio.o
0x298 (size before relaxing)
.rodata.str1.1
0x000000000804aa64 0x18 ./obj_sw/fat.o
0x1b (size before relaxing)
.rodata.str1.1
0x000000000804aa7c 0xa ./obj_sw/player.o
.rodata.str1.1
0x000000000804aa86 0xf9 ./obj_sw/emac.o
0x101 (size before relaxing)
.rodata.str1.1
0x000000000804ab7f 0x15 ./obj_sw/udp.o
.rodata.str1.1
0x000000000804ab94 0x1cd ./obj_sw/can.o
0x1eb (size before relaxing)
*(.glue_7)
.glue_7 0x0000000000000000 0x0 linker stubs
*(.glue_7t)
.glue_7t 0x0000000000000000 0x0 linker stubs
0x000000000804ad64 . = ALIGN (0x4)
*fill* 0x000000000804ad61 0x3
0x000000000804ad64 _etext = .
0x000000000804ad64 _sidata = _etext

.vfp11_veneer 0x000000000804ad64 0x0
.vfp11_veneer 0x0000000000000000 0x0 linker stubs

.v4_bx 0x000000000804ad64 0x0
.v4_bx 0x0000000000000000 0x0 linker stubs

.iplt 0x000000000804ad64 0x0
.iplt 0x0000000000000000 0x0 d:/gcc/arm-kgp-eabi-procyon/bin/../lib/gcc/arm-kgp-eabi/4.9.0/thumb/cortex-m3/crtbegin.o

.rel.dyn 0x000000000804ad64 0x0
.rel.iplt 0x0000000000000000 0x0 d:/gcc/arm-kgp-eabi-procyon/bin/../lib/gcc/arm-kgp-eabi/4.9.0/thumb/cortex-m3/crtbegin.o

.ccmram
*(.ccmram)

.bkpsram
*(.bkpsram)

.bootloader
*(.bootloader)

.eeprom
*(.eeprom)

.image
*(.image)

Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Sep 17 2018, 05:03
Сообщение #18


Ally
******

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



Цитата(adnega @ Sep 17 2018, 07:17) *
Все самописное. Ethernet только IP и UDP, FAT только чтение, никакой ОС нет.

Мне кажется у вас серьезный кризис в личной продуктивности. Замыкание на самописном коде - прямой путь к выгоранию.
Бросайте это дело и беритесь за что-нибудь трендовое, скажем Amazon FreeRTOS или Zephyr Project или Mbed.
Там узнаете как пишутся действительно защищенные загрузчики и сколько они занимают места (mcuboot),
как работают действительно надежные файловые системы(nffs, littlefs) и как делать менеджеры систем с встраиваемыми протоколами и транскодерами (mcumgr).
Go to the top of the page
 
+Quote Post
adnega
сообщение Sep 17 2018, 05:27
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(AlexandrY @ Sep 17 2018, 08:03) *
Мне кажется у вас серьезный кризис в личной продуктивности. Замыкание на самописном коде - прямой путь к выгоранию.

Скажем так: я с вами не согласен. Кто каким инструментом умеет пользоваться, тот им и должен работать.
Изучили вы много сторонних библиотек - молодец - пользуйтесь ими. У меня много своих библиотек и я хорошо ими пользуюсь.
На старой работе попробовал разок использовать чужой велосипед, т.к. руководство запретило изобретать свой,
что ж потратил времени больше на изучение FreeRTOS, uIP, StdLib. И что самое обидное - из коробки не работает - нужно допиливать.
А править чужую библиотеку, на мой взгляд, крайне неправильный подход.

Просто для общего развития: какие критерии "серьезного кризиса в личной продуктивности"? Вдруг он у меня действительно есть.

Мы очень сильно отошли от темы. Не думаю, что ТС использует или планирует использовать в будущем сторонние библиотеки.
Мнения высказаны. Я считаю, что для озвученной задачи вполне хватит STM32F042F4 (меньше просто уже нет).
Кто-то считает, что нужно закладывать камень с 2МБ флеши. Истина будет где-то посередине.

Цитата(AlexandrY @ Sep 17 2018, 08:03) *
Там узнаете как пишутся действительно защищенные загрузчики и сколько они занимают места (mcuboot),

Защита от чтения встроена в МК и устанавливается загрузчиком.
Образ обновления защищает от дурака (чтоб не залить какой-нить текстовый файл и не отдать его на исполнение) - просто
чтоб неокирпичить девайс. Защищать от копирования - не тот уровень поделия, чтоб его ломали.

Цитата(AlexandrY @ Sep 17 2018, 08:03) *
как работают действительно надежные файловые системы(nffs, littlefs)

У меня карта работает в read-only. Зачем мне эта надежность? Я могу выкинуть карту и вставить новую за 500 руб (раз в 5 лет).
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Sep 17 2018, 06:48
Сообщение #20


Ally
******

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



Цитата(adnega @ Sep 17 2018, 08:27) *
Просто для общего развития: какие критерии "серьезного кризиса в личной продуктивности"? Вдруг он у меня действительно есть.

Эт инверсная логика. Маленький код - маленькая продуктивность. Маленькая продуктивность в течении длительного времени - кризис. laughing.gif
Ну и вообще по личному опыту. Я все это проходил.
На MSP430F149 с 2 КВ RAM ставил uCOS и делал на нем полнофункциональную охранную систему с GSM


Цитата(adnega @ Sep 17 2018, 08:27) *
Защищать от копирования - не тот уровень поделия, чтоб его ломали.

Защищенный имелось в виду канал передачи к дивайсу.
Сам дивайс защищается постоянными апгрейдами.

Цитата(adnega @ Sep 17 2018, 09:38) *
Основной объем занимают пользовательские звуковые файлы. Шрифты внутри МК. Для этого проекта шрифт один объемом 2К.

Ну опять же.
Тратите время на конвертацию шрифтов.
Между тем uC/GUI дает возможность применить любые TTF шрифты, но занимают они минимально несколько десятков килобайт.
Хорошие с арабскими и китайскими кодировками за мегабайт переваливают, а держать их надо в RAM-е
Go to the top of the page
 
+Quote Post
adnega
сообщение Sep 17 2018, 07:07
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(AlexandrY @ Sep 17 2018, 09:48) *
Эт инверсная логика. Маленький код - маленькая продуктивность. Маленькая продуктивность в течении длительного времени - кризис. laughing.gif
Ну и вообще по личному опыту. Я все это проходил.

Написал один раз хороший код и везде пользуешься. У меня все проекты братья-близнецы.
Зачастую новое изделие это копипаста из существующего кода и раскомментирование нужных дефайнов в h-файле.

"Маленький код - маленькая продуктивность". Маленькая продуктивность, прошу прощения, у чего? У программиста?
У изделия говорят про функционал, дык, он описан в ТЗ и полностью выполняется.

Если продуктивность это аналог КПД, то тут все в порядке. Маленький код - маленькие затраты (причем код как правило уже существующий),
а функционал из ТЗ. Делим пользу на затраты, и ваш подход проигрывает т.к. затраты высоки.

Чтоб определиться с терминами и не возбуждать телепатов, сообщу, что речь ведется о проектах порядка 10 тыс. строк кода.
За существенно большие и за крошечные рассуждать не берусь. У ТС как раз задачка озвученного порядка.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Sep 17 2018, 07:31
Сообщение #22


Ally
******

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



Цитата(adnega @ Sep 17 2018, 10:07) *
"Маленький код - маленькая продуктивность". Маленькая продуктивность, прошу прощения, у чего? У программиста?
У изделия говорят про функционал, дык, он описан в ТЗ и полностью выполняется.

Просто ТЗ по нашим временам - немыслимая роскошь.
Какого заказчика не возьми, у него будет куча идей, но ни одного ТЗ.
Все такие из себя стартапы и на мелочах не заморачиваются.
Критерий приемки - проданная партия.
Тут хош не хош, а приходится ломать стереотипы.
Выбирать совершенно другую архитектуру чем предлагает заказчик, другие языки, другие схемы.

Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Macslim   Разработать устройство   Sep 15 2018, 14:04
- - smart_pic   Реально не понятно зачем для управления 4реле по C...   Sep 15 2018, 16:53
|- - C2000   Цитата(smart_pic @ Sep 15 2018, 19:53) Ре...   Sep 16 2018, 17:00
|- - Macslim   Цитата(jcxz @ Sep 16 2018, 07:42) Интерес...   Sep 16 2018, 06:54
|- - Macslim   Цитата(adnega @ Sep 16 2018, 08:03) Много...   Sep 16 2018, 07:23
||- - adnega   Цитата(AlexandrY @ Sep 16 2018, 12:23) И ...   Sep 16 2018, 09:36
||- - iosifk   Цитата(jcxz @ Sep 16 2018, 12:56) Очень з...   Sep 16 2018, 10:11
|||- - jcxz   RE: Разработать устройство   Sep 16 2018, 18:58
|||- - jcxz   Цитата(adnega @ Sep 17 2018, 08:27) У мен...   Sep 17 2018, 06:13
||||- - adnega   Цитата(jcxz @ Sep 17 2018, 09:13) Зачем т...   Sep 17 2018, 06:38
||||- - jcxz   Цитата(adnega @ Sep 17 2018, 09:38) Обращ...   Sep 17 2018, 06:59
|||- - adnega   Цитата(AlexandrY @ Sep 17 2018, 10:31) Вс...   Sep 17 2018, 07:35
||- - AlexandrY   Цитата(adnega @ Sep 16 2018, 18:08) Я не ...   Sep 16 2018, 16:48
|- - AlexandrY   Цитата(adnega @ Sep 16 2018, 10:03) У мен...   Sep 16 2018, 07:39
- - leocat   info at open-plc.com   Sep 16 2018, 06:06
- - AlexandrY   Цитата(Macslim @ Sep 15 2018, 17:04) Ищу ...   Sep 16 2018, 06:32
- - a123-flex   Цитата(AlexandrY @ Sep 16 2018, 10:32) И ...   Sep 17 2018, 07:23
- - AlexandrY   Цитата(a123-flex @ Sep 17 2018, 10:2...   Sep 17 2018, 07:45
- - adnega   Цитата(AlexandrY @ Sep 17 2018, 10:45) Т....   Sep 17 2018, 07:50
|- - AlexandrY   Цитата(adnega @ Sep 17 2018, 10:50) Это р...   Sep 17 2018, 08:01
|- - adnega   Цитата(AlexandrY @ Sep 17 2018, 11:01) Гд...   Sep 17 2018, 08:21
|- - jcxz   Цитата(AlexandrY @ Sep 17 2018, 11:01) Тр...   Sep 17 2018, 09:02
|- - gosha-z   Цитата(jcxz @ Sep 17 2018, 12:02) Да уж.....   Sep 17 2018, 10:07
- - a123-flex   Цитата(AlexandrY @ Sep 17 2018, 11:45) Че...   Sep 17 2018, 08:17
- - AlexandrY   Цитата(a123-flex @ Sep 17 2018, 11:1...   Sep 17 2018, 08:35
- - adnega   Цитата(AlexandrY @ Sep 17 2018, 11:35) Вы...   Sep 17 2018, 08:54
- - a123-flex   Цитата(adnega @ Sep 17 2018, 11:54) Прям ...   Sep 17 2018, 09:00


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

 


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


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