听韦东山老师公开课的理解

为什么需要数据段、代码段和BBS段?这么多的段是干什么用的。

阅读全文

Tiny6410 的NandFlash(K9GAG08U0E)

学的实在是揪心,一开始以为的8K每页读,才发现前4页为2K,但当以前4页2K读,后面8K读,又发现坑爹的来了,这个问题的引出主要是我读取内核并启动没有成功,然后基于这样的一个考虑,我以2K每页读取NandFlash,代码运行成功,我以8K每页读取NandFlash,代码运行一样成功,问题就在这里,如果这样考虑,代码到底是每页多少被写到NandFlash的?事实证明的是,这篇文章给了我答案,看来还真是。

阅读全文

改正国嵌Makefile对底层目录更改无响应的毛病

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
OBJS := start.o mem.o main.o dev/dev.o lib/lib.o

CFLAGS = -fno-builtin -I$(shell pwd)/include
export CFLAGS

gbbot.bin : $(OBJS)
arm-linux-ld -Tgboot.lds -o gboot.elf $^
arm-linux-objcopy -O binary gboot.elf $@

%.o : %.S
arm-linux-gcc -g -c $<

%.o : %.c
arm-linux-gcc -g $(CFLAGS) -c $<

.PHONY : lib/lib.o @ 根据其他的Makefile琢磨出来的一种响应底层目录文件更改后Makefile不响应的解决之道
lib/lib.o:
cd lib; make; cd ..

.PHONY : dev/dev.o
dev/dev.o:
cd dev; make; cd ..

clean:
rm -f *.o *.elf *.bin
make clean -C lib

make clean -C dev

阅读全文

串口终端没有打印字符

​ 首先是UART.c上的错误,这个错误比较低级,由于将putc中的这个寄存器UFSTAT0写错了,还是写的以前那个没有开FIFO使用的寄存器,那也就导致了UART打印的字符乱码了,这个是根据源码一步一步找到的(替换文件,一个个来找),但是这个问题还不是最终需要解决的问题。

阅读全文

Linux下的栈的实现

Linux下的栈是由glibc这个库,glibc其实是C运行库,它提供了Linux系统最底层的API(应用程序接口),glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。

阅读全文