Піддослідний кролик, або один з МК вітчизняного виробництва

    
Не все так погано, як могло б бути, але не настільки добре, як хотілося б.
Перш, ніж приступити до розгляду реалізації драйверів різних пристроїв в МК, хотілося б визначитися з об'єктом, на якому ми вищезгадану реалізація будемо здійснювати. Звичайно, можна розглянути сферичний МК у вакуумі, але в цьому випадку будь-яке незручність, що приводить до особливостей реалізації програми, буде розглядатися, як щось штучно створене. Якщо ж взяти за базовий ідеальний МК (якби я вмів їх створювати, то напевно давно б цим зайнявся), то для нього написання якої-небудь програми взагалі не становить жодної труднощі і зводиться до двох командам: 1) зрозумій думки розробника і 2) зроби це. Тому який то реальний МК в якості базового дуже бажаний, причому те, наскільки він далекий від ідеалу, стане мірилом цінності розробленого ПО (раз воно стійко працює на цьому МК, перенести його на будь-який більш досконалий неважко — сильне твердження, але приймемо його без доведення ).
 
Отже, починаємо вибирати претендента. Швидше за все, архітектура AVR не викличе особливих заперечень (прихильники пікових, а також MIPSов і так далі, мовчати!), Оскільки дана архітектура широко поширена і реалізованеа у величезній кількості МК різних фірм. Оскільки мова йде все ж про МК, а не про SoC, обмежимося рівнем Cortex-M. Так як особисто я не бачу особливої ​​різниці між М0, М1, М3 і М4 (звичайно ж вона є і я її бачу, але для наших цілей вона несуттєва), то можна вибрати будь-яку і тому вибираємо найпростішу (з міркувань, розглянутих вище), а саме М1. А ось тут то нас чекає невелика засідка, а саме: версія М1 адаптована для побудови МК у складі ПЛІС, тому окремий кристал з такою реалізацією знайти нелегко. На щастя, він таки є, і ми можемо цілком обгрунтовано вибрати МК типу 1986ВЕ1Т виробництва фірми Міландр. Саме в цьому і полягає мистецтво інженера — грамотно обгрунтувати і довести неминучість рішення, яке і без того вже прийнято в силу різноманітних (у тому числі суб'єктивних) чинників. Насправді з цим МК я вже з пів-року танцюю з бубном працюю, причому обраний він був не мною і всього лише з причини відповідності вимогам до умов експлуатації. Проте на даному МК цілком можна показати місця, гда лежать найбільш популярні в середовищі розробників вбудованого ПО граблі, ну і натякнути про існування шляхів їх обходу (а от чи користуватися цими рекомендаціями, кожен вирішує для себе). Зрештою, життя настільки коротке, що її ледве вистачає на те, щоб здійснити необхідну кількість помилок, а вже повторювати їх — недозволена розкіш. Відразу відповім тим, хто запідозрив у цьому пості відтінок замовлення і запропонує його перенести — спочатку дочитайте, там буде багато такого, що до реклами навряд чи удасться віднести.
Отже, що за МК ми вибрали в якості піддослідного кролика — звичайний Cortex-M, яких хоч греблю гати (кому цікаво, дивіться його специфікації на сайті виробника, Гугл вам на допомогу), якби не деякі цікаві особливості, а саме:
1. Ядро М1 нечасто зустрічається в готових рішеннях, але це особливих проблемм не створює, його відмінності від M0 не настільки істотні, щоб утруднити розробку ПЗ (оцінка 0).
2. Заявлена ​​частота в 144 Мгц перевищує характерні величини для МК такого класу, але є особливості, про що пізніше (+1).
3. Об'єм пам'яті програм у 128 Кб і пам'яті даних в 48 Кб характерні для середніх моделей в сімействах МК, а тут один представник (+1).
4. Є широкий (32 біта адреси та 32 біта даних) швидкий конфігурується інтерфейс до зовнішньої пам'яті, що теж рідкість (+1).
5. Батарейний домен з RTC і NVRAM — зовсім непогано, якби не… дивися далі (+1).
6. Контролер прямого доступу в пам'ять — теж не завжди є — зовсім непогано, якби… (+1).
7. АЦПx8, ЦАПx2, таймерx4, датчик температури, SSIx3, UARTx2 — більш-менш стандартний набір (0).
8. USB FS Host / device c PHY — непогано, але не унікально (0).
9. CANx2, ГОСТ 18997, ГОСТ 52070х2 — непогано, але на любителя (+1)
10. Ethernet 10/100 MAC — непогано плюс PHY в кристалі — а ось це рідкість (+1)
11. Налагодження по JTAG і SWD — стандарт (0).
12. Температурний діапазон -60 +125 градусів — чесний Military c ухилом в Aerospace (+1).
 Сподіваюся всім зрозуміло, що безкоштовних тістечок не буває і саме останній з параметрів (точніше, необхідний для його забезпечення металокерамічний корпус) має 2 значних недоліку — висока ціна і проблемми з формуванням ніг і обрізанням при монтажі. Цінову політику зацікавлені можуть уточнити у виробника, я дам тільки орієнтири в рублях — військове приймання 8000 +, просто металокераміка 6000 +, хоча (ура) тепер є версія в пластиці 400 +. Мається отладочная плата розробки самого Міландра, але її ціна (60к +) може неприємно здивувати розробника, привчених західним виробником до недорогих платам. Підводячи підсумки по залізу — ми маємо цілком гідну, навіть конкурентоспроможну розробку, для певної групи застосувань (знаючі зрозуміють) практично не має конкурентів. На цьому закінчимо з бочкою меду і перейдемо до бочці ложці дьогтю, щоб виправдати обіцяні заяви про незамовний природі посту.
Що ж у нас буде в цій частині опису:
1. Документація — мені нелегко дається визнання начебто очевидного факту, але, погоджуся, вона все-таки є. Думаю читачі відразу зрозуміли моє ставлення до цієї частини розробки. Шановні колеги з фірми Міландр, так робити не можна. Документація взагалі, а особливо на такій специфічний продукт, як МК, це не те, що можна робити за залишковим принципом, а невід'ємна частина розробки. Так, у фірми є форум, на якому викладено багато корисних речей і на питання часто оперативно відповідають. Так, у фірми є грамотна служба підтримки і на питання завжди оперативно відповідають. Але все це не замінює що не містить помилок, вичерпну і зрозумілу документацію і ні в якій мірі не є їй альтернативою, як милиці не замінюють ніг (вони звичайно, дозволяють пересуватися, але зручним цей процес я б не назвав). Ризикуючи образити кого-небудь, тим не менш скажу — опис (специфікація) МК місцями невиразно, неповно, містить помилки і численні умовчання, причому як раз з тих питань, які представляють особливий інтерес у зв'язку з їх унікальністю. Якщо ви (це я звертаюся до можливих користувачам МК) не знаєте досконально архітектуру аналогічних МК, вам буде дуже важко, оскільки багато місця в описі доводиться домислювати за авторів, виходячи з наявного досвіду. На щастя, як архітектура самого МК, так і окремі його вузли, ліцензовані у AVR або совпадаютс AVR аналогами, тому можна подивитися оригінальну документацію та багато що стане ясно (-1)
2. Те, до чого ми всі давно звикли (знову таки розбещені західними виробниками), а саме рекомендації щодо застосування-так от, їх просто немає. Я не кажу про будь документах, що пояснюють особливості застосування, а про найпростіші речі, типу підключення живлення і завдання режимів роботи. Інформація про це частково розкидана по тексту специфікації на МК, а частково просто відсутня. Можна завантажити схему отладочной плати і подивитися там (розробники так частенько роблять), і велике спасибі за її наявність, але чому не зробити окремі AppNotes, мені здається, що фірми класу TI не дарма їх створюють (-1).
3. Те, без чого ми не можемо обійтися (ну я точно не зможу) — середовище розробки програм — тут залік. Можна використовувати і Keil і IAR (що я і роблю) і Eclipse і Фитон (дивися зауваження трохи нижче), напевно, що небудь ще, на форумі викладені настройки для середовищ програмування, які дозволяють працювати (знову таки не без глюків, але все поправимо ). Єдине зауваження — знову таки немає документа типу Getting Started, де б усі стадії налаштування були б чітко прописані (0).
4. Те, без чого обійтися можна, (але, якого диявола ми будемо обходиться без цього) — стандартні бібліотеки і приклади додатків. Питання непросте — з одного боку на форумі можна знайти приклади звернення до регістрів зовнішніх пристроїв МК, причому як у вигляді окремих файлів, так і у вигляді готових проектів під середу, написані як в Міландре, так і у фірмі Фитон. І хоча налаштування проектів можна було б зробити і поаккуратнее, після мінімальної корекції все працює, а після невеликої корекції працює добре. Надаються исходники досить таки значних по функціоналу проектів і прикладів реалізації пристроїв. Та все це є, але… якщо взяти якусь книгу за стандартами програмування на С для вбудованих систем (природно, англомовну, ну нецікавий наш вузький ринок розробників вітчизняним видавництвам), то вищезгадані тексти можна додати до цієї книги під гаслом «Як не треба писати програми для НД або знайди 12 помилок ». У мене склалося відчуття (безсумнівно неправильне, але поязвіть-то можна), що автори ПО книгу прочитали, і свідомо її рекомендації ігнорують. До речі, після знайомства з цією бібліотекою у мене виникли сумніви щодо середовища розробки від тієї ж фірми Фитон. Але, з іншого боку, на смак всі фарби різні і, може бути, сам по собі такий стиль не так і поганий, просто я звик до дещо іншого. Проте, Преставлення проекти компілюються і працюють (за принципом — це не баг, це фіча така) і, якщо не вникати в деталі реалізації (а на це частенько немає часу, продукт потрібен був ще вчора, питання ефективності відходять на другий план і там навічно залишаються), можуть бути використані як основа для власних проектів розробника (0).
Підводити підсумки вдумливому читачеві, я виклав основні (коротенько, хвилин на 40, більше, я думаю, не треба), на мій погляд, за і проти використання даного МК у Ваших розробках. Що ж до мене, то я з цим МК в основному розібрався, значить і Ви зможете, оскільки особисто я, незважаючи на всі мінуси, з ним працюю і тому всі подальші приклади реалізації ПО для МК буду демонструвати саме на ньому (ось такий я шкідливий), тим самим пропагуючи його застосування, так що, напевно, все таки піст можна вважати рекламою. А що стосується критики, не ображайтеся, просто прикро, що створивши непоганий (ну дійсно непоганий) продукт, розробник недостатньою увагою до його просування звужує область можливого його примения до розмірів гетто (а конкуренти не дрімають).
    
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.