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

А почему так инициализация

А как понять "из списка доступных билдов нужно лишь выбрать нужный под нужную ОСь и пересобрать проект"?

Под ядро я имел в виду ось, ибо эмбеддерские это все же больше ядра просто, иногда с плюшками, не суть

Под ядром я понимаю ядро - CPU, т.е. железо.

Под RTOS - я понимаю ОСь, т.е. программную библиотеку, которой по сути является любая ОСь.

Я уже уточнил, что делал разные билды под разные ОСи с целью выяснить, какая ось для меня ловчее. В одном из проектов.

В других проектах поменять ось чуть дольше - для этого нужно к проекту подключить соотв. библиотеку нужной оси (заранее собирается в библиотеку), а ненужную удалить.

Настройки ОСи и сам код не меняются и не зависит от ОСи. Это очень удобно при сопровождении проекта и переносе кусков проекта с одного железа на другое.

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


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

Под ядром я понимаю ядро - CPU, т.е. железо.

Под RTOS - я понимаю ОСь, т.е. программную библиотеку, которой по сути является любая ОСь.

Я уже уточнил, что делал разные билды под разные ОСи с целью выяснить, какая ось для меня ловчее. В одном из проектов.

В других проектах поменять ось чуть дольше - для этого нужно к проекту подключить соотв. библиотеку нужной оси (заранее собирается в библиотеку), а ненужную удалить.

Настройки ОСи и сам код не меняются и не зависит от ОСи. Это очень удобно при сопровождении проекта и переносе кусков проекта с одного железа на другое.

Я вообще о том, что перенести проект из freeRtos под, например, scmRtos это отнюдь не две минуты. Впрочем это ни о чем, как и весь топик. Хотя полезное есть и в нем (топике)

 

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


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

Я вообще о том, что перенести проект из freeRtos под, например, scmRtos это отнюдь не две минуты.

Да, если он изначально был написан конкретно под freeRTOS.

Я же немного про другое ))

 

Впрочем это ни о чем, как и весь топик.

В этом смысле он почти ничем не отличается от большинства топиков в этом разделе :D

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


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

В этом смысле он почти ничем не отличается от большинства топиков в этом разделе :D

Ну кто же виноват, что stackoverflow нужный ответ за минуту находится. Просто иногда не находится ничего, потому что не ищешь, а не ищешь потому что даже не знаешь, что такое бывает ))

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


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

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

Сурово у вас.... За операционку уже сажают! как в 37-ом :biggrin:

 

Зачем приводить к u8, а потом к uint?

Это аналог: (uint)((x) & 255) но выглядит проще.

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


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

Сурово у вас.... За операционку уже сажают! как в 37-ом :biggrin:

Раз пошла такая пьянка...

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

И будем переписывать, например, freeRTOS по-русски. Вот я уже придумал название: "бесплОС" или "бесплатОС" :biggrin:

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


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

Это аналог: (uint)((x) & 255) но выглядит проще.

Так и подумалось вначале.

 

И будем переписывать, например, freeRTOS по-русски. Вот я уже придумал название: "бесплОС" или "бесплатОС" :biggrin:

А мы не смеемся. Вот только есть один момент. Законопроекта как такового пока что нет, а вот пути развития уже поставлены - собственно, действительно была поставлена задача разработки отечественного ПО, и начали все с ОСРВ... Пока в рамках международного форума по информационным системам на службе ОПК РФ.

Как назвать? ПонОС - "ПОНятная Операционная Система" :biggrin:

 

БолгенОС уже была..

Тссс, вдруг он сейчас зарегистрируется и будет кричать "не БолгенОС а Болдженос"?laughter2.gif

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


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

Да ладно? Про какой компилятор речь? IAR вполне себе тоже "проглатывает" :((((

 

В примере:

  static void Func(char *s) { s[1] = 0; }
  Func("test");

Это специальный случай - для него в стандарте сделали хак (иначе не назовёшь), иначе бы разломались практически все С программы (а С++ декларировался как совместимый с С, ха ха).

 

 

 

Еще интересный вопрос возник. Как вам такая штука

int searchDB (int v)
{
//..............
}
.... main...
searchDB('1234');

Тут gcc дает warning что то там multibyte, точно не помню. Просто интересное применение, раньше как-то не встречал такую идею.

Нормальная multi byte символьная константа. Описана в стандарте. Единственный её минус (который практически не даёт её применять) - стандарт не описывает endianess этой самой константы, т.е. неизвестно, с какого конца целого числа будут выкладываться символы :(

Если вам всё равно как именно она формируется, то использовать можно.

 

 

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


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

Единственный её минус

В данном случае это - не единственный минус.

В этом достаточно убедится, попытавшись дать не sizeof(int), а меньше символов, например 2 или 3.

Компилятор предупредит соотв. warning, но проект все равно успешно соберется.

Не трудно догадаться, что предсказать результат работы такой функции в этом случае уже никто не сумеет ...

 

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


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

В данном случае это - не единственный минус.

В этом достаточно убедится, попытавшись дать не sizeof(int), а меньше символов, например 2 или 3.

А в чём проблема? Вариант с одним символом у вас вопросов не вызывает, с 4мя тоже (положим что int - 32 бита). Чем вам 2 или 3 символа не нравятся?

Это же не строка, а символьный литерал.

 

 

 

'ABC' будет 0x414243 или 0x434241 (как карта ляжет). Других вариантов нет.

 

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


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

А в чём проблема?

Что будет в этой переменной int v, которую ожидает функция, если ей дать не '1234', а например '1', '12', '123' ?

Нули или "мусор" из стека? "Стандарт" описывает эти нюансы?

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


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

Что будет в этой переменной int v, которую ожидает функция, если ей дать не '1234', а например '1', '12', '123' ?
Т.е. вы утверждаете, что запись int v='1'; неправильна? Это что то новое, до сих пор миллионы програмистов ничего неорпеделённого в такой записи не видели.

 

По вашему вопросу - в v будет 0x31, 0x3132, 0x313233 или 0x31, 0x3231, 0x333231 соотвественно для BE/LE машин.

 

Нули или "мусор" из стека? "Стандарт" описывает эти нюансы?
Никакого мусора 'из стека'. И да, стандарт эти 'нюансы' описывает.

 

Может вы спутали литеральные константы и строки? Речь шла о '1234' а не о "1234" (второе вообще даст ошибку)

 

 

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


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

Т.е. вы утверждаете, что запись int v='1'; неправильна?

Не утверждаю, а лишь спрашиваю ;)

 

Никакого мусора 'из стека'. И да, стандарт эти 'нюансы' описывает.

Ясно, значит, недостающие байты во многобайтовой переменной будут заполнены нулями.

А BE/LE влияет на положение этих неявных нулей в переменной?

С какой стороны будет "обрезана" слишком длинная литеральная константа (например, '12345678' для 4-байтового int) с учетом BE/LE?

 

Может вы спутали литеральные константы и строки?
Не спутал, мне известна разница.

 

Честно говоря, никогда не использовал подобные неявные инициализации - многобайтовые литеральные константы.

И, судя по всему, правильно делал :)

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


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

"С какой стороны будет "обрезана" слишком длинная литеральная константа" - ни с какой, даст ошибку компиляции

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


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

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...