|
发表于 2017-10-15 16:33:13
27149 浏览 2 回复
关于裸机和uboot的两个疑问
1.我看到start.S中最后把MMU打开了,但是在进行裸机开发LED程序的时候,为什么烧写地址仍然使用的是物理地址0x40008000?不应该是虚拟地址吗?
2.调试过程中,为什么我访问GPIO的物理地址竟然可以?比如LED的物理地址...
|
|
|
|
|
|
|
|
1 在整个操作系统启动之前,必须使用物理地址操作mcu
在操作系统启动之后,必须使用虚拟地址。
uboot最开始的点灯,没有进行虚拟化操作,没有进行内存映射,意思就是,内存都没启动。所以,不能使用虚拟地址,只能像单片机一样使用物理地址。
2 在驱动中,你调用的led,操作系统已经启动,而且调用的是内核提供的函数,这些函数都是对虚拟地址进行操作的。 |
|
|
|
|
|
|
|
楼主|
发表于 2017-10-19 10:24:03
|
|
|
|
|
|
登录或注册
扫一扫关注迅为公众号


|