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

MounRiver Studio for RISC-V большой размер кода sprintf/sscanf

https://github.com/T-head-Semi/xuantie-gnu-toolchain смотрели? Очень даже неплохой тулчейн.

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


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

On 2/12/2024 at 3:13 PM, BSACPLD said:

Коллеги, можно ли в MounRiver Studio for RISC-V выбирать размер кода (полноту реализации) для функций sprintf/sscanf аналогично тому, как это сделано в IAR?

Чтобы вручную не переключать --specs=nano.specs, полнота выбирается в свойствах линкера. Там же включается поддержка плавающей точки.2024-04-0909_48_35-Propertiesforfreertos_ee2024.thumb.png.71410ea13a216e0df6ab658409188ced.png

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


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

В 13.02.2024 в 21:31, dimka76 сказал:

Тяжело этот форум читать. Глазки выпадают )))

20 лет назад выпадали, и щас зашел посмотреть - ничего не изменилось...😆

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


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

В 13.02.2024 в 00:19, BSACPLD сказал:

На вывод ещё проще - вся телеметрия в формате "%s%d\r\n" либо "%s%x\r\n".

Других форматов ввода/вывода не предполагается - устройство максимально простое и тупое.

тогда зачем вам printf в 16К кода?  достаточно itoa, puts

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


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

itoa - тоже можно, только вот прелесть библиотек в том, чтобы взять что-то хорошо сделанное и использовать его для своего блага, а itoa можно и свой написать за 5 минут.

Как вариант - есть еще от coremark printf (а может они сами его где-то позаимствовали), с опциональной поддержкой плавающей точки. Он тоже единицы кБ занимает.

https://github.com/eembc/coremark/tree/main/barebones

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


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

5 minutes ago, kan35 said:

Он тоже единицы кБ занимает.

Это очень жирно 🙂

Я уже сделал свои функции и устройство уже в серии.

Тему можно закрывать.

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


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

10 minutes ago, BSACPLD said:

Это очень жирно 🙂

Я уже сделал свои функции и устройство уже в серии.

Тему можно закрывать.

А Вы нам и не нужны уже! Мы же тут плодотворно общаемся)))

(шучу, конечно же)

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


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

1 час назад, AlexRayne сказал:

тогда зачем вам printf в 16К кода?  достаточно itoa, puts

itoa не возвращает длину строки, или хотя бы указателя на последний записанный элемент в предоставленном буфере.

А то получилась полная фигня - передаем буфер - функция возвращает указатель на него же:sad:

Из-за этого приходится вызывать strlen() каждый раз после itoa() при самостоятельном формировании строк.

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


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

22 минуты назад, Arlleex сказал:

itoa не возвращает длину строки, или хотя бы указателя на последний записанный элемент в предоставленном буфере.

Это ещё ерунда. Хуже что она не позволяет контролировать переполнение буфера. И не позволяет перегрузить функцию записи выходного потока символов на пользовательскую. А семейство printf это всё умеет.

PS: Бесконтрольный sprintf (без контроля переполнения) имхо - моветон.

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


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

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

Хуже что она не позволяет контролировать переполнение буфера.

Насколько я помню - itoa ограничивает длину строки 33 и 65 символами для int и long long, соответственно.

Буквально вчера отказался от монструозных sprintf(), чтобы ужать first-bootloader под МК на нужный размер.

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


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

1 час назад, jcxz сказал:

Это ещё ерунда. Хуже что она не позволяет контролировать переполнение буфера

а какой буффер вы ожидаете переполнить от itoa?
но так таки да, если функция неудобно, лучше свое наколхозить - из того же printf надергать

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


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

28 минут назад, AlexRayne сказал:

лучше свое наколхозить

К этому и сводится большая часть программирования, несмотря на рядом стоящую помойку под названием стандартная библиотека.

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


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

13 минут назад, Arlleex сказал:

К этому и сводится большая часть программирования, несмотря на рядом стоящую помойку под названием стандартная библиотека.

помойка с кучей "стандартных библиотек". линуксы свои навороты давно пропихивают в стандарт, но он на то и стандарт чтоб как в палате мер и весов неприксновенно лежать

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


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

On 4/10/2024 at 12:21 PM, Arlleex said:

чтобы ужать first-bootloader под МК на нужный размер.

http://elm-chan.org/fsw/strf/xprintf.html

 

On 4/10/2024 at 12:21 PM, Arlleex said:

Насколько я помню - itoa ограничивает длину строки 33 и 65 символами для int и long long, соответственно.

Эта функция не включена в стандарт. Поэтому все зависит от реализации.

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


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

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

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

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

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

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

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

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

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

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