Исправление Barracuda72, (текущая версия) :
Первый момент: я бы предложил вместо десятка заглушек (для _exit
, _close
и пр.) сделать одну-единственную, а все остальные имена повесить на нее weak alias’ами. Это копейки, безусловно, но зачем их тратить, если можно не тратить?
Второй момент: «Скопируем код из предыдущей части» уж очень буквально получилось) Или это упражнение для читателя?
Еще пара нюансов (возможно, специфичных):
os.c
добавилась еще пустая функция _init
без аргументов.__libc_init_array
. Решилось возвращением ld в качестве компоновщика (впрочем, это не обязательно) и ручным указанием правильных путей к библиотекам. Возможно, я просто не нашел нужный флаг у GCC (ни -mcpu
, ни -march
, ни -mtune
, ни -mthumb
не помогают).По итогу на C6T6 прошивка с printf
даже в ПЗУ не влезает (тут его всего 32 кило). С iprintf
помещается и работает вполне приемлемо.
Исправление Barracuda72, :
Первый момент: я бы предложил вместо десятка заглушек (для _exit
, _close
и пр.) сделать одну-единственную, а все остальные имена повесить на нее weak alias’ами. Это копейки, безусловно, но зачем их тратить, если можно не тратить?
Второй момент: «Скопируем код из предыдущей части» уж очень буквально получилось) Или это упражнение для читателя?
Еще пара нюансов (возможно, специфичных):
os.c
добавилась еще пустая функция _init
без аргументов.__libc_init_array
. Решилось возвращением ld в качестве компоновщика (впрочем, это не обязательно) и ручным указанием правильных путей к билиотекам. Возможно, я просто не нашел нужный флаг у GCC (ни -mcpu
, ни -march
, ни -mtune
, ни -mthumb
не помогают).По итогу на C6T6 прошивка с printf
даже в ПЗУ не влезает (тут его всего 32 кило). С iprintf
помещается и работает вполне приемлемо.
Исходная версия Barracuda72, :
Первый момент: я бы предложил вместо десятка заглушек (для _exit
, _close
и пр.) сделать одну-единственную, а все остальные имена повесить на нее weak alias’ами. Это копейки, безусловно, но зачем их тратить, если можно не тратить?
Второй момент: «Скопируем код из предыдущей части» уж очень буквально получилось) Или это упражнение для читателя?
Еще пара нюансов (возможно, специфичных):
os.c
добавилась еще пустая функция _init
без аргументов.__libc_init_array
. Решилось возвращением ld в качестве компоновщика и ручным указанием правильных путей к билиотекам. Возможно, я просто не нашел нужный флаг у GCC (ни -mcpu
, ни -march
, ни -mtune
, ни -mthumb
не помогают).По итогу на C6T6 прошивка с printf
даже в ПЗУ не влезает (тут его всего 32 кило). С iprintf
помещается и работает вполне приемлемо.