summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--md/notes/undefined_c/titles.md62
1 files changed, 46 insertions, 16 deletions
diff --git a/md/notes/undefined_c/titles.md b/md/notes/undefined_c/titles.md
index 85a8456..a383b82 100644
--- a/md/notes/undefined_c/titles.md
+++ b/md/notes/undefined_c/titles.md
@@ -1631,18 +1631,12 @@ rustc main.rs -l lib -L . -o hello -C link-arg="-Wl,-rpath=./"
## Multiplatform
-### Cross compile
-
-
-
-
-
### Different flags
-
### Check architecture
+
### AArch64
https://snapshots.linaro.org/gnu-toolchain/13.0-2022.08-1/aarch64-linux-gnu/
@@ -1694,22 +1688,58 @@ Hello world arm64
### AVR8
+AVR is 8bit CPU that is quite popular for hobbiest. As baremetal device its doesnt have full libc support,
+and needs some setup before its possible to do basics things with it.
-### Emscripten
+__avr_echo.c__
+```c
+#include <avr/io.h>
-[/writeup/web_assembly_sdl_example.md](/writeup/web_assembly_sdl_example.md)
+#define FOSC 16000000UL
+#define BAUD 9600
+#define MYUBRR FOSC/16/BAUD-1
-#### Embed in JS
+void USART_Init( unsigned int ubrr)
+{
+ UBRRH = (unsigned char)(ubrr>>8);
+ UBRRL = (unsigned char)ubrr;
+ UCSRB = (1<<RXEN)|(1<<TXEN);
+ UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
+}
+int main()
+{
+ char c;
+ USART_Init( MYUBRR );
+ while(1)
+ {
+ while ( !(UCSRA & (1<<RXC))){};
+ c = UDR;
+ while (!(UCSRA & (1<<UDRE))){};
+ UDR = c;
+ }
+ return 0;
+}
+```
+
+```
+avr-gcc avr_echo.c -mmcu=atmega16 -Wall -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -o avr_echo.out
+```
+
+Next steps woule be to programm it, in case you have ISPv2 programmer and ATmega16 chip
+```bash
+avr-objdump -s --disassemble avr_echo.out > avr_echo.s
+avr-objcopy -j .text -O ihex avr_echo.out avr_echo.hex
+avrdude -pm16 -cavrispv2 -Pusb -U flash:w:avr_echo.hex
+```
+
+### Emscripten
-## Graphics
+[/writeup/web_assembly_sdl_example.md](/writeup/web_assembly_sdl_example.md)
+
+#### Embed in JS
-### SDL2
-### GTK
-### OpenGL
-### Shaders
-### Generate image