Информация об изменениях

Сообщение Re[16]: Rust и экология от 24.02.2022 11:18

Изменено 24.02.2022 11:49 ArtDenis

Re[16]: Rust и экология
Здравствуйте, alex_public, Вы писали:

_>Ну вот https://habr.com/ru/post/495948/ например.


Это антипример какой-то

Несколько строк оттуда:

    // за что либа меня мучает тем, что я должен знать регистр управления флэшем - acr?  
    let clocks = rcc.cfgr.freeze(&mut flash.acr); 

    // за что либа меня мучает тем, что я должен знать что регистр тактирования порта GPIOB - это apb2?
    let mut gpiob = dp.GPIOB.split(&mut rcc.apb2);

    // за что либа меня мучает тем, что я должен знать что управление настройками 
    // порта разделено на два регистра и один из них crh (для пинов с 8 по 15)?
    let mut led = gpiob.pb12.into_push_pull_output(&mut gpiob.crh);


Код с использованием HAL будет удачнее хотя бы из-за того, что программист не должен знать тонкости тактирования и устройства регистров перифирии. При всех своих больших недостатках HAL является именно hardware abstraction layer, а не поделкой в стиле "смотри, я могу программировать МК на расте!!!"
Re[16]: Rust и экология
Здравствуйте, alex_public, Вы писали:

_>Ну вот https://habr.com/ru/post/495948/ например.


Это антипример какой-то

Несколько строк оттуда:

    // за что либа меня мучает тем, что я должен знать регистр управления флэшем - acr?  
    let clocks = rcc.cfgr.freeze(&mut flash.acr); 

    // за что либа меня мучает тем, что я должен знать что регистр тактирования порта GPIOB - это apb2?
    let mut gpiob = dp.GPIOB.split(&mut rcc.apb2);

    // за что либа меня мучает тем, что я должен знать что управление настройками 
    // порта разделено на два регистра и один из них crh (для пинов с 8 по 15)?
    let mut led = gpiob.pb12.into_push_pull_output(&mut gpiob.crh);


Код с использованием HAL будет удачнее хотя бы из-за того, что программист не должен знать тонкости тактирования и устройства регистров перифирии. При всех своих больших недостатках HAL является именно hardware abstraction layer, а не поделкой в стиле "смотри, я могу программировать МК на расте!!!"

Повторюсь: даже если закрыть глаза на эти косяки, то всё равно это те же яйца, только в профиль. Если раст даёт преимущества перед С++ на "большом компе", то для МК пока таких преимуществ не видно