Jump to content

    
Sign in to follow this  
tremor

Вопрос по C

Recommended Posts

/me надел пенсне

В целом порицая немотивированную привязку к IAR'у, не могу не заметить что в эклипсе отладочная информация в регистрах показывается исходя из данных svd-файлов, которые никоим образом не имеют отношения к дефайнам в заголовочных файлах.

Share this post


Link to post
Share on other sites
5 minutes ago, jcxz said:

"Копаться в даташитах" нужно по-любому. Иначе что-то более-менее стоящее (на чужих либах) написать невозможно. Имхо. Так что адреса оттуда переносятся автоматом в процессе изучения периферии МК и по мере необходимости.

согласен копаться надо, но переносятся они отнюдь не автоматом, а вручную. Если вам когда-то понадобится перейти на другой чип, в пределах одной платформы и от одного производителя (и я удивлюсь, если вам это ни разу не надо было делать) то все исходники надо будет перепроверять на соответсвие адресов или менять их. Как бы зачем. Ну это дело хозяйское, конечно.

Share this post


Link to post
Share on other sites
6 минут назад, Kabdim сказал:

В целом порицая немотивированную привязку к IAR'у, не могу не заметить что в эклипсе отладочная информация в регистрах показывается через данные из svd-файлов, которые никоим образом не имеют отношения к дефайнам в заголовочных файлах.

Хех! Значит оппоненты даже и тех инструментов, коими пользуются, сами толком не знают.  :biggrin:

В IAR-е как раз никаких доп.файлов не нужно - как прописал в .h так оно и видно в Watch. Что очень удобно.

 

4 минуты назад, slavka012 сказал:

согласен копаться надо, но переносятся они отнюдь не автоматом, а вручную. Если вам когда-то понадобится перейти на другой чип, в пределах одной платформы и от одного производителя (и я удивлюсь, если вам это ни разу не надо было делать) то все исходники надо будет перепроверять на соответсвие адресов или менять их. Как бы зачем. Ну это дело хозяйское, конечно.

И переходил и перепроверял. И даже как-то делал это с таймером в руках - затрачиваемое время ничтожно. А "автоматом" - это значит просто в процессе изучения. Где само изучение занимает на порядки больше времени, чем написание хидера. Который кстати бывает делаю просто копипастом из даташита, с последующей правкой. Да - и ещё есть такое понятие как "моторная память", тоже вещь полезная  ;)

Share this post


Link to post
Share on other sites
6 минут назад, jcxz сказал:

В IAR-е как раз никаких доп.файлов не нужно - как прописал в .h так оно и видно в Watch. Что очень удобно.

Т.е. поправив эти заголовочные файлы я могу завалить IAR в чтение запрещенной области данных? Так себе преимущество.

Share this post


Link to post
Share on other sites
1 hour ago, jcxz said:

Это что так действительно необходимо? Сегодня отлаживать этот проект на IAR-е, завтра на GCC, послезавтра в CCS?

Сегодня отлаживать один проект в IAR'е, а завтра на основе него сделать другой в GCC - вполне может понадобиться.

Share this post


Link to post
Share on other sites
22 минуты назад, Kabdim сказал:

Т.е. поправив эти заголовочные файлы я могу завалить IAR в чтение запрещенной области данных? Так себе преимущество.

Это можно сделать поправив любую переменную в работающем проекте. Хоть в IAR хоть в GCC. Вас это не смущает?

21 минуту назад, aaarrr сказал:

Сегодня отлаживать один проект в IAR'е, а завтра на основе него сделать другой в GCC - вполне может понадобиться.

Кто-ж спорит. Только насколько часто это нужно делать? Я вот припоминаю пару таких случаев за последние ~ 10 лет. Как-то не сильно это напрягает....

Share this post


Link to post
Share on other sites

Заканчиваем холивары. Если автор получил ответ на свой вопрос то тему закрываем.

Share this post


Link to post
Share on other sites
On 11/8/2018 at 5:01 AM, tremor said:

Разъясните эту строчку:

((GPIO_TypeDef *) GPIOF_BASE)

Понимаю, что структура, понимаю что указатель, но как-то странно написано.

обычно пишут так: char *p;

А тут заморочено, то ли присвоение значения указателю, то ли что.

Вполне логичная конструкция.

Только это не объявление указателя а приведение типов.

GPIOF_BASE это обычная беззнаковая константа объявленая через #define

GPIO_Typedef это тип, к указателю на который мы хотим привести константу

А все вместе приведение типа (беззнакового целого) к типу указателя на структуру.

Тоесть мы говорим что результат операции это теперь указатель на структуру такого-то типа, а значение этого указателя - та самая константа.

Share this post


Link to post
Share on other sites

Я думаю реально пора закрывать, пока тут не набилось сотни три сообщений с разжеванием этой хитрой конструкции от каждого заходящего...

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this