Tiny6410 的NandFlash(K9GAG08U0E)
学的实在是揪心,一开始以为的8K每页读,才发现前4页为2K,但当以前4页2K读,后面8K读,又发现坑爹的来了,这个问题的引出主要是我读取内核并启动没有成功,然后基于这样的一个考虑,我以2K每页读取NandFlash,代码运行成功,我以8K每页读取NandFlash,代码运行一样成功,问题就在这里,如果这样考虑,代码到底是每页多少被写到NandFlash的?事实证明的是,这篇文章给了我答案,看来还真是。
学的实在是揪心,一开始以为的8K每页读,才发现前4页为2K,但当以前4页2K读,后面8K读,又发现坑爹的来了,这个问题的引出主要是我读取内核并启动没有成功,然后基于这样的一个考虑,我以2K每页读取NandFlash,代码运行成功,我以8K每页读取NandFlash,代码运行一样成功,问题就在这里,如果这样考虑,代码到底是每页多少被写到NandFlash的?事实证明的是,这篇文章给了我答案,看来还真是。
1 | OBJS := start.o mem.o main.o dev/dev.o lib/lib.o |
首先是UART.c上的错误,这个错误比较低级,由于将putc中的这个寄存器UFSTAT0写错了,还是写的以前那个没有开FIFO使用的寄存器,那也就导致了UART打印的字符乱码了,这个是根据源码一步一步找到的(替换文件,一个个来找),但是这个问题还不是最终需要解决的问题。
Linux下的栈是由glibc这个库,glibc其实是C运行库,它提供了Linux系统最底层的API(应用程序接口),glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。