移植Linux到SAMSUNG S3C2410开发板

【S3C2410简介】 
S3C2410装备有SAMSUNG产ARM920T核、一体化16kB Cache/MMU能轻松奔跑Linux。
该板资源如下:
(1) CPU : ARM920T 工作频率为 200MHz 。 
(2) Flash : 16MB 
(3) SDRAM : 64MB SDRAM 
(4) UART : RS-232串行接口 
(5) 其他 : 14针ARM JTAG接口等。 



【交叉编译环境的建立】
基于 Linux 操作系统的应用开发环境一般是由目标系统硬件(开发板) 和宿主 PC 机所构成。
目标硬件开发板用于运行操作系统和系统应用软件,而目标板所用到的操作系统的内核编译、
应用程序的开发和调试则需要通过宿主 PC 机来完成 (所以称为交叉编译) 。
双方之间一般通过串口、并口或以太网接口建立连接关系, 其结构图如下所示。

               

单独拿出一台 PC 机, 在该 PC 上安装桌面的 Linux操作系统(如 Red Hat Linux 9. 0),
可以采用默认的安装选项(注意要包含 ftp 服务), 这台 PC 作为 Linux 服务器, 
除管理员以外,一般不直接让其他人去操作。
将该 Linux 服务器接入局域网, 并新建一些合法用户,
以便其他的 PC 机 (在此将其称为工作站) 的合法用户
能访问到 Linux 服务器。而其他的 PC 机 (工作站) 仍然使
用 Windows 操作系统。
需要的软件工具包括 :
(1) ftp 客户端程序。
(2) Telnet 工具。
(3) 移植到某一特定 ARM 平台的 Linux 操作系统内核源码。
(4) GNU编译工具,可由相关网站下载。
在某工作站 PC 上安装 ftp 客户端程序和 Telnet 工具,

安装完毕后应该可以在该工作站PC和Linux服务器之间进行文件的传输,
并在工作站PC可以通过Telnet登陆服务器,可能需要暂时关闭防火墙。 






【Linux 服务器的安装】
将工作站 PC 上的 Linux 操作系统内核源码压缩包和 GNU 编译工具通过 ftp 传送到
Linux 服务器的某个目录(如合法的用户目录), 
然后在该目录下解压,并将 GNU 编译工具安装到默认的工作目录即可,
以上工作通过在工作站 PC 使用 Telnet 工具完成,而不需要在 Linux 服务器上进行。 
Linux 操作系统内核的编译一般有一个比较固定的步骤, 会根据 MakeFile 文件的不同而略有差异,
可参考相关文档,编译的工作在工作站 PC 使用 Telnet 工具完成。
按固定的步骤编译内核完成以后, 会在相应目录生成可执行的二进制文件, 
通过 ftp将该可执行的二进制文件传回工作站 PC, 
然后再通过ADS 或 SDT 下的烧写工具写入开发板的 Flash 即可。






【Bootloader 的架构和功能】
Bootloader 引导程序是嵌入式开发很重要的组成部分。
它是嵌入式系统上电后执行的第一个程序,并由它最终将操作系统启动起来并将控制权交给操作系统。
Bootloader 引导程序最基本的功能是对硬件系统的初始化和内核启动参数设置并启动内核。
Bootloader 的主要功能有 :
(1) 初始化 CPU 的主频、 SDRAM 、中断、串口等硬件 ;
(2) 启动 Linux 内核并提供一个 RAMDISK;
(3) 通过串口下载内核或 RAMDISK 到目标板上 ;
(4) 将修改过的内核或 RAMDISK 写入到 Flash 内 ;
(5) 为用户提供一个命令接口。

在嵌入式系统开发过程中,
Bootloader 还与主机通信,不断检测从主机传来的控制信息和数据信息,完成相应的操作。
Linux 运行在保护模式下, 但是当机器启动复位的时候却处于实模式下。
所以写 Bootloader 的工作也是在实模式之下的。
Bootloader 的实现除了依赖于 CPU 的体系机构,还依赖于目标板的设置,
本系统的 Bootloader 引导程序分为stage1 和 stage2 两个阶段。
依赖于CPU的体系机构的代码,比如设备初始化等,放在ARM汇编写的stage1中,
stage2用C语言来实现,可以实现复杂的功能,同时代码具有更好的可读性和可移植性。

§Bootloader Stage1 
①屏蔽所有的中断。为中断提供服务的通常是操作系统,
因此在执行 Bootloader 的过程中可以不响应任何中断。中断屏蔽通过写 CPU 的中断屏蔽寄存器来完成。
②设置 CPU 的时钟频率和速度。
③初始化 RAM 设置系统的内存控制器的功能寄存器和各内存库控制寄存器等。
④为加载 stage2 准备 RAM 空间。
⑤拷贝 stage2 到 RAM 中。
⑥跳转到 stage2 的入口点。

§Bootloader Stage2
①初始化本阶段要使用到的硬件设备,比如初始化至少一个串口以便 I/ O,初始化计时器等。
②检测系统的内存映射。
所谓内存映射就是指在整个4 GB物理地址空间中有哪些地址范围被分配用来寻址系统的 RAM 单元。
③加载内核映像和根文件系统从 Flash 读入到 Rom中,这里包括两个方面 :
a. 内核映像所占用的内存范围 ;
b. 根文件系统所占用的内存范围。
在规划内存占用的布局时,主要考虑基地址和映像的大小两个方面。
stage2 执行映像刚被拷贝到 RAM 空间时的系统内存布局如下图所示。

④设置内核的启动参数。
⑤调用内核。 Bootloader 调用 Linux 内核的方法是直接跳转到内核的第一条指令处。




【Linux 内核的构建和移植】
1) 设置软件开发环境。
为了和目标板进行通讯,必须要在主机上终端运行仿真程序 DNW。
建议在宿主机上安装 RED HAT Linux 9. 0版本。
以下以在 SHELL 模式下安装编译器和源代码为例:
首先以 ROOT 身份进入系统。把 RED HAT Linux
9. 0 的安装光盘放入光驱中,执行装载光驱命令 :
mount / dev/ cdrom . / mnt/ cdrom
如果系统不能识别. / mnt/ cdrom, 可以使用如下命令 (假设 cdrom 为/ dev/ had ),
则用 mount - t iso9660 / dev/ hdb / mnt 。
如果在安装 RED HAT Linux 9. 0 的时候已经默认安装了 CDROM,
以上命令不需执行, 直接进入 CDROM 所在目录。
mkdir / usr/ local/ arm
mount / dev/ cdrom . mnt/ cdrom
cd/
cp / mnt/ cdrom/ bin/ cross - 2 . 95 . 3 . tar . bz2 / usr/ local/ arm/
cp / mnt/ cdrom/ bin/ linux
- for s3c2410 . gz
tar zxvf linux - for s3c2410 . gz
cd / usr/ local/ arm/
tar - jxvf cross - 2 . 95 . 3 . tar . bz2
程序执行完后,Linux 源代码和编译环境都已建立起来了。
 
2) Linux 内核编译。
首先以 ROOT 身份进入系统。然后完成下列步骤,
就可以在 / linux/ arch/ arm/ boot/ 得到内核的映像文件
zimage 。
在 shell 命令下输入命令进行内核配置 :
make menuconfig
该命令执行之后生成文件. comfig它保存这个配置
信息,下一次再执行 ake menuconfig 的时候将生成新的.
comfig文件。
输入命令 :make dep
输入命令 :make clean
输入命令 :make zlamge
通过各个目录的Makefile进行,将会在各个目录下生成一系列目标文件,此时完成了对Linux的编译工作。

3 ) Linux应用程序。
Linux 内核的编译、修改、移植实际上与上层的应用程序,
如命令解释器 shell、登陆程序login相关,这些程序应根据需要重新定制。 
利用终端仿真程序 DNW 和 Bootloader 引导程序通过串口就可以把 Linux 内核移植到目标系统板。 
移植完成后,Linux 就可以在目标系统板上运行了。 




转载于:https://my.oschina.net/u/926124/blog/159789

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值