Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
4 / 1 / 0
Регистрация: 16.01.2019
Сообщений: 11
1

Hello World для планшета с arm процессором, без ОС

01.08.2020, 14:42. Просмотров 338. Ответов 8
Метки нет (Все метки)

Здравствуйте. Есть неплохие знания по с++ и c#, но есть огромное желание разобраться с низкоуровневым программированием. Пытаюсь заставить себя учить ассемблер, а для этого поставил перед собой задачу на своём стареньком планшете c ARM Cortex-A7 на борту, вывести "Hello world" без использования ОС, только средствами процессора.
Видел ролик, где школьник написал программу на yasm под ПК, которая выводит "Hello World", собрал bin и смонтировал образ диска.
После этот образ закинул в виртуальную машину как загрузочный и получил на экране свой "Hello World".

Подскажите, пожалуйста, план осуществления подобного на arm планшете без использования android и ядра linux. Что нужно изучить? Какой assembler и транслятор использовать ? Спасибо

Android уже снёс
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.08.2020, 14:42
Ответы с готовыми решениями:

hello world для arm процессора
Здравствуйте. Давно есть желание начать изучать asm. Сегодня на просторах youtube нашёл ролик, где...

Посоветуйте плату с ARM процессором
Мы хотим сделать встраиваемый девайс, который будет использовать такие технологии: 1. OpenGL 2....

Выбор планшета. На ARM или Athom?
Собираюсь приобрести планшет с Андроид, планшеты на intel не рассматривал для покупки, так как...

Компилятор без ограничения кода с ассемблером для ARM
Добрый вечер! Собственно весь вопрос в заголовке) Кто-нибудь может подсказать открытый компилятор,...

8
Модератор
961 / 522 / 81
Регистрация: 23.07.2018
Сообщений: 1,407
Записей в блоге: 3
01.08.2020, 15:08 2

Не по теме:

Цитата Сообщение от Dymanski200 Посмотреть сообщение
Android уже снёс
Не дожидаясь учебного плана?
Обратно сможете установить?

0
2573 / 1165 / 152
Регистрация: 28.10.2011
Сообщений: 4,135
Записей в блоге: 6
01.08.2020, 15:28 3
Цитата Сообщение от Dymanski200 Посмотреть сообщение
Что нужно изучить?
Устройство ARM Cortex-A7 процессора (включая всю встроенную периферию), устройство и работу оперативной памяти, устройство и работу всей внешней периферии (сенсорный экран, дисплей, wi-fi, USB, и т. д.). Для всего этого вам необходимо написать драйверы.

Цитата Сообщение от Dymanski200 Посмотреть сообщение
Какой assembler и транслятор использовать ?
Вы знаете как инициализировать процессор, оперативную память, дисплей и уже написали код?
1
4 / 1 / 0
Регистрация: 16.01.2019
Сообщений: 11
01.08.2020, 20:53  [ТС] 4
Какой ужас.
А зачем мне для вывода на экран знать работу периферии ?
Вот про дисплей согласен, но разве это реализовано не на аппаратном уровне ? Без драйверов для него не обойтись ?
А вообще вы считаете, что лучше мне туда не лезть, да ?
0
Модератор
961 / 522 / 81
Регистрация: 23.07.2018
Сообщений: 1,407
Записей в блоге: 3
01.08.2020, 21:51 5
Dymanski200, Вы вообще не написали, куда Вы хотели выводить "Hello world": на терминал, подключенный по USB, на другой планшет по Bluetooth или ещё куда.

Пусть, например, нужно нарисовать белый прямоугольник на растровом экране, который доступен как фреймбуфер в какой-то области адресного пространства, где у каждого пикселя свой адрес.
Но как Ваша прошивка задаст или узнает, адрес начала фреймбуфера? А зная формат пикселов, и их адреса, Вы моглиы бы в своей прошивке на Си просто заполнять нужные элементы массива нужными значениями.
Все устройства, которые внутри и снаружи SoC, нужно отключать, подключать, настраивать и готовить к работе. В "больших" системах общего назначения этим занимается встроенное программное обеспечение до запуска ОС.
Цитата Сообщение от Dymanski200 Посмотреть сообщение
А вообще вы считаете, что лучше мне туда не лезть, да ?
Это Вам решать. Если есть необходимость, или очень чешутся руки, лезьте.
Но после подготовки на берегу.
0
4 / 1 / 0
Регистрация: 16.01.2019
Сообщений: 11
01.08.2020, 22:28  [ТС] 6
Спасибо за объяснение. Мне просто казалось это более простым делом
0
2402 / 1721 / 356
Регистрация: 11.09.2009
Сообщений: 6,321
02.08.2020, 05:33 7
Цитата Сообщение от Dymanski200 Посмотреть сообщение
Мне просто казалось это более простым делом
Не расстраивайтесь. Вы не одиноки в этом заблуждении.
0
Модератор
961 / 522 / 81
Регистрация: 23.07.2018
Сообщений: 1,407
Записей в блоге: 3
02.08.2020, 09:05 8
Если бы производитель не заботился о разработчиках конечных устройств, всё было бы сложнее.
Если разработчика не снабдить средствами разработки и тестирования, готовыми библиотеками для работы с аппаратурой, не помочь с board support package для различных ОС, то разработчики выберут для своих проектов продукцию другого, более заботливого производителя.

Благодаря этой заботе, у любителя цифровой электроники получается такой helloworld для платы с микроконтроллером
https://www.cyberforum.ru/blog... g6694.html
Как видно из отчёта, напрямую с какими-то ни было assemlberами общаться не пришлось.

STM32Cube:
https://www.st.com/content/st_... ces-page=1
https://www.st.com/content/ccc... 32CUBE.pdf
0
2573 / 1165 / 152
Регистрация: 28.10.2011
Сообщений: 4,135
Записей в блоге: 6
02.08.2020, 11:45 9
Цитата Сообщение от politoto Посмотреть сообщение
Благодаря этой заботе, у любителя цифровой электроники получается такой helloworld для платы с микроконтроллером
Не самый удачный пример.
Во первых это простейшая программа. С выводом на дисплей будет намного сложнее.
Во вторых, программу можно написать без куба и будет намного нагляднее.
C
1
2
3
4
5
6
7
8
9
10
11
12
#include "stm32f10x.h"
int main(void)
{
    RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; // Вкл. тактирование порта GPIOC.
    GPIOC->CRH |= GPIO_CRH_MODE13;      // Настройка вывода PC13 как выхода.
 
    while(1)
    {
        GPIOC->ODR ^= GPIO_ODR_ODR13;   // Инвертирование состояния вывода PC13.
        for (uint32_t i=0; i<1000000; i++) __ASM("nop");
    }
}
И главное. Этот код намного оптимальнее чем тот что генерирует куб и размер прошивки в несколько раз меньше.

Но это простой код. С выводом на дисплей все сложнее. Нужно настроить FSMC или SPI (или другой интерфейс через который подключается дисплей) согласно подключению и параметрам дисплея. Нужно правильно проинициализировать дисплей (смотрим даташит на дисплей). Нужно написать код вывода строки текста используя выбранный шрифт. Не забываем что дисплей графический и нужно нарисовать текст учитывая особенности дисплея.
Т. е. даже для MK это задача не для новичка, а про планшет и говорить нечего.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.08.2020, 11:45

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Guanta r53 с процессором нет вкл,без процессора есть!
доброе время суток ,у меня возникла такая проблема с платой quanta r53:когда вставляю процессор то...

Как проверить верстку на планшете без планшета?
Форумчане! Возникла необходимость протестить свою верстку на планшете, но планшета у меня нет!...

Hello world без системы
Как мне можно вывести приветствия без операционной системы. Ну типа создать ОС? И потом создать...

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

Ищу извлечение корня быстрее, чем arm_sqrt_q15 (ARM без FPU)
Интересует как наиболее быстро извлечь корень на ARM, а именно на stm32f103. Без FPU, в целых...

Hello, World без метода main
Это Хорстманн и Корнелл &quot;Java 2. Библиотека профессионала&quot;. Вот код: public class Hello { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.