一、Windows下使用OTG烧写系统
硬件连接
1、在windows使用NXP提供的mfgtool来向开发烧写系统。需要先将开发板的USB_OTG接口连接到电脑上
2、mfgtool工具是向板子先下载一个Linux系统,然后通过这个系统来完成烧写系统
切记使用OTG烧写的时候要先将SD卡拔出来,等USB_OTG与电脑连接成功以后就可以再将SD卡插进去
烧写系统都是烧写到NAND或者EMMC里面
(NAND1、5、8拨上去)
二、何为uboot
1、uboot是一个裸机程序,比较复杂
2、uboot就是一个bootloader,作用作用就是用于启动Linux或其他系统。Uboot最主要的工作就是初始化DDR,因为Linux是运行在DDR里面的。一般Linux镜像zlmage(ulmage)+设备树(.dbt)存放在SD、EMMC、NAND、SPI FLASH等等外置储存区域
这里就牵扯到一个问题
需要将Linux镜像从外置flash拷贝到DDR中,再去启动
uboot的主要目的就是为系统的启动做准备
uboot不仅仅能启动Linux,还可以启动其他系统,如vxworks.
Linux不仅仅能通过uboot启动
uboot是个通用的bootloader,他支持多种架构
嵌入式底层驱动开发
进度:
系统移植:1、2、3、9、10、11、13、14、15(了解)
驱动:1-18(熟悉)
1、bootloader的工作原理及作用
2、u-boot两个阶段的工作任务有哪些
3、经常使用的u-boot命令有哪些
4、如何编译u-boot并烧写到开发板
1、Linux内核组成模块有哪些?Linux版本号的作用
2、Linux内核配置裁剪内核
3、Linux内核的启动流程
1、根文件系统的作用
2、如何制作根文件系统
3、nfs、ftp的作用
往内核添加程序(功能)
#include <linux/module.h>
#include<linux/init.h>
static int__init hello_init(void)
{
printk("hello init\n");
return 0;
}
static void__exit hello_exit(void)
{
printk("hello exit\n");
}
module_init(hello_init);//指定加载驱动时执行的第一个函数
module_exit(hello_exit);//指定卸载驱动时
#KERNELDIR := / root/driver/linux-imx-rel imx 4.1.15 2.1.0 ga alientek
KERNELDIR :=/lib modules/5.4.0- 66- generic/build
//指定依赖哪个内核源码进行编译
#E↑59i#1iCURRENT PATH := $(shell pwd)
obj-m := hello.o
build: kernel modules
kernel modules:
$(MAKE) -C $(KERNELDIR) M=$ (CURRENT PATH) modulesclean:
$(MAKE) -C $(KERNELDIR) M=$(CURRENT PATH) clean
执行的函数