Перейти к содержанию
    

Помогите начать работать с ARM7 Atmel

Вот это гораздо более весомый аргумент, чем эфемерная переносимость, постоянно вынуждающая к компромиссам.
Дак это и есть самый большой плюс переносимости. Потому как для каждой платформы все равно код для работы с портами ВВ, хоть на ассемблере, хоть на Си приходится переписывать. Я называю это драйвером :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гыыы... ржунемогу. Мож за два месяца? Или за год? :)

 

Тем более. Лишний аргумент в пользу Си. Про 2 недели я образно выразился. Хотя основы можно и за 2 недели выучить ... Чай ТС не студент, которому в институте только делфи и C# преподавали. Слова типа "регистр" и "косвенно-индексная адресация" его явно в шок не ввергают.

 

Вы думаете, всем нужен sprintf() в таком виде, в котором он есть?

А чем он плох? Тем, что "много лишнего"? Если не нравится, пишите свой, я не против :rolleyes: . Я не сторонник изобретать новый велосипед, если в старом мне не нравятся одни лишь педали ....

 

Вы думаете, что гораздо проще "от балды" сидеть на си, не зная ассемблера?

Для очень многих задач ассемблер вообще не нужен. Даже на АВРе, который гораздо тормознутее любого АРМа.

Но "и зайца можно научить курить" .....

 

Вы думаете, что все неизбежно пользуются плавучкой? Это еще при том, что в си нету нативной поддержки fixed point, dsp-инструкций и подобного, всегда надо чего-то допиливать.

А при чём здесь "плавучка"? Плавучку как раз лучше на си применять, а не на ассемблере.

Битовых операций в СИ тоже нету. На этот счёт есть "компиляторо-зависимые расширения", типа PORTA.0 в CvAVR или asm вставки, которые тоже одни хвалят, другие ругают почём свет стоит и пишут на GCC общепринятые конструкции типа PORTA|=0x01 ещё и с кучей макросов "для удобства". А потом иди гадай, что там в машинном коде стоит, одна команда типа sbi или or с кучей регистровых пересылок.

 

Потому как для каждой платформы все равно код для работы с портами ВВ, хоть на ассемблере, хоть на Си приходится переписывать. Я называю это драйвером :rolleyes:

 

Согласен на все 100. Сaм стараюсь так писать :) .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я называю это драйвером :rolleyes:

Это все красиво, когда нет влияния окружения - оси, или... вот простой пример: есть DMA - нету DMA. Появляется сразу некий средний уровень между HAL и приложением. Игнорировать - гробить ресурсы.

 

А чем он плох?

:) Самый правильный ответ: "А чем он хорош?"

Педали там такие, что для разных размещений форматной строки у нас зоопарк функций, и без "много лишнего" - получается вообще ничего, поскольку там все красиво увязано с остальными сущностями stdlib. Лично мне больше нравится printf с хэндлами - вроде как "вес строки" не теряется и не надо дополнительных телодвижений. К тому же, у меня редко, когда тред "стучит" больше чем в один поток ввода-вывода.

А при чём здесь "плавучка"? Плавучку как раз лучше на си применять, а не на ассемблере.

Это уже диалог глухих :)

Битовых операций в СИ тоже нету. На этот счёт есть "компиляторо-зависимые расширения", типа PORTA.0 в CvAVR или asm вставки, которые тоже одни хвалят, другие ругают почём свет стоит и пишут на GCC общепринятые конструкции типа PORTA|=0x01 ещё и с кучей макросов "для удобства". А потом иди гадай, что там в машинном коде стоит, одна команда типа sbi или or с кучей регистровых пересылок.

А нафига оно надо, чай не 90-е

union _io_register
{
  uint32_t reg;
  struct _io_register_bits
{
    unsigned mux:3;
    unsigned relay:1;
    unsigned shutdn:1;
} bits;
} io_register;
io_register.bits.relay = 1;
io_register.bits=(struct _io_register_bits){.mux=3,.relay=1,.shutdn=1};// вот это долго не все поддерживали
io_register.reg = 0;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это все красиво, когда нет влияния окружения - оси, или... вот простой пример: есть DMA - нету DMA. Появляется сразу некий средний уровень между HAL и приложением. Игнорировать - гробить ресурсы.
А никто и не игнорирует. Я ж сказал выше - под каждую платформу, в зависимости от требований и архитектуры, пишется драйвер. Есть DMA на Марсе, нет ДМА на Марсе, науке это известно (С) :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще один плюс в сторону СИ. Вот сейчас работаю над проектом. В основе XMEGA (заказчик пожелал). Работаю сейчас как раз над HAL. Милое дело :) Пишу на Си. Драйверы под внешние устройства (к примеру AT45DB) имеются. И с DMA и с 'тупо в лоб'. Ну милое дело. Так как я не думаю о том, как передавать параметры из HAL в драйвер DataFlash. Пусть компилер голову греет. Зато я грею голову пивом. И не плохо идет :rolleyes: :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну милое дело.

Тоже самое, не поверите, AT45DB321. :beer: Пишу на Си под stm32f100, будь они неладны. Милое дело - пиковый размер буфера чтения больше 25% озу, это ж хорошо, что без сторонних либ и ртосей, а то за стек страшно стало бы... Так и тянется рука к старшим в линейке камням. Правда, к Си vs Ыссемблер это уже не относится, больше к тому, что сам себе папакарло.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Во-во :) :beer: И это хорошо!

:)

Я контрасту немного наддам: это тоже х, только не хорошо - подвернулась ветка, а там всё, об чём говорили: и неохота лазать по асму, и ртось, и глубина стека под подозрением, и клятый printf с тупо буферизацией в стиле smartdrive. Полный набор.

ЗЫ и я сильно сомневаюсь, что трижды обернутый vsprintf не свалил человеку стек.

Изменено пользователем _Pasha

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...