linux启动流程
1,bootloader,一个裸机程序,为linux启动准备环境,引导linux启动
1)初始化CPU(工作模式)
2)初始化异常向量表
3)初始化堆栈
4)关闭中断
5)关看门狗(定时复位)
6)关Cache
7)关闭MMU(虚拟地址→物理地址)
8)初始化内存
9)初始化相关设备(串口、网卡)
10)集成相关协议
11)搬移内核到内存,向内核传参(控制台、根文件系统类型及位置)
12)启动内核
13)从此bootloader不再控制CPU,CPU控制权移交给内核
2,linux kernel(内核),一个复杂的、永不停息的程序
1)文件管理
2)进程管理
3)网络管理
4)内存管理
5)设备管理
linux启动完成后加载(挂载)根文件系统,init->services,shell -> userapp
3,rootfs,根文件系统(挂载的第一个文件系统),一堆文件的集合
文件系统:按一定格式组织的一堆文件
1)系统命令
2)配置文件
3)应用程序(工具,用户程序)
4)普通文件(文本文件、mp3、mp4、图片)
5)启动脚本(系统服务、安装的应用程序)
RAM和ROM类型
RAM
SRAM:静态,用触发器电路存储数据,无需刷新,速度极快但成本高、容量小。
DRAM:动态,用电容存储数据,需要定时刷新来维持电荷,速度稍慢但成本低、容量大,是构成内存的基础
SDRAM:同步动态,与 CPU 时钟信号同步工作,提升了数据传输效率,是 DRAM 的主流升级形态
DDRn:Double Data Rate SDRAM,在时钟的上升沿和下降沿都能传输数据,带宽比 SDRAM 翻倍
内存(DDR SDRAM)属于RAM → DRAM → SDRAM 分支,是嵌入式设备的主存 / 运行内存,也是程序运行时的临时存储区域
ROM
PROM:可编程,出厂时为空白,可由用户一次性编程写入数据,但写入后无法修改。早期用于固化固定功能的程序,现在基本被 Flash 取代。
EPROM:可擦除可编程,支持多次擦写,但需要用紫外线照射芯片窗口来清除数据,操作繁琐。曾用于需要偶尔更新程序的场景,现已被 EEPROM 和 Flash 淘汰
EEPROM:电可擦除可编程,支持电信号擦写,可按字节修改数据,擦写速度慢但灵活性高
flash(闪存)属于 ROM → EEPROM 的大容量升级版,是嵌入式设备的永久存储介质,相当于电脑的固态硬盘
linux配置
1,先通过网线将imx6和windows连接起来,向imx6中烧写操作系统,以如下软件将Ubuntu和imx6建立联系

2,连接好后打开Windows搜索设备管理器,点开端口查看类型

3,打开软件点击相同的类型

4,通电imx6

5,通过网线与Ubuntu建立连接,需要配置IP地址
1)查看IP地址:ifconfig

2)修改IP地址:ifconfig eth0 192.168.1.100(复制/粘贴:Ctrl+Shift+c/v)

3)修改选项

6,Ubuntu修改
1)打开网络配置文件配置成如下形式 sudo vim /etc/network/interfaces

其中address后就是要修改的IP地址

2)共享文件,sudo vim /etc/export,将其内容改成如下(一般只有最后一行不同,毕竟其他行被注释了)

7,回到SecureCRTPortable.exe中共享目录
mount -o nolock,nfsvers=3 192.168.1.3:/home/linux/nfs /mnt


注:不要先进入mnt中,挂载后退出重进,就会显示Ubuntu中的文件,重复挂载会报错
8,编写程序
在SecureCRTPortable.exe没有gcc编译器,而且通过gcc编译的文件a.out也不识别

所以要通过arm-linux-gnueabihf-gcc hello.c -o hello来编译

注意:每次重启imx6都要在软件中重新修改IP地址和挂载