U-Boot

u-boot分析 二 (u-boot目录结构) u-boot分析 二继前一启动篇,此博文目的:学习u-boot的目录结构,从code架构上对u-boot有一个整体的把握和了解。一、学习u-boot,得问,什么是u-boot?u-boot是一段开源的程序。Universal Boot Loader,普遍的引导程序。是非常常用的一个引导程序,可作为主流系统的引导程序,如OpenBSD, NetBSD, FreeBSD,4.4BSD, Linux, S 阅读详情

U-Boot

http://blog.youkuaiyun.com/ce123?viewmode=contents

        U-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是相应的Linux内核源程序的简化,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。

简介

  U-Boot不仅仅支持嵌入式Linux系统的引导,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系统。其目前要支持的目标操作系统是OpenBSD, NetBSD, FreeBSD,4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks, LynxOS, pSOS, QNX, RTEMS, ARTOS。这是U-Boot中Universal的一层含义,另外一层含义则是U-Boot除了支持PowerPC系列的处理器外,还能支持MIPS、 x86、ARM、NIOS、XScale等诸多常用系列的处理器。这两个特点正是U-Boot项目的开发目标,即支持尽可能多的嵌入式处理器和嵌入式操作系统。就目前来看,U-Boot对PowerPC系列处理器支持最为丰富,对Linux的支持最完善。其它系列的处理器和操作系统基本是在2002年11 月PPCBOOT改名为U-Boot后逐步扩充的。从PPCBOOT向U-Boot的顺利过渡,很大程度上归功于U-Boot的维护人德国DENX软件工程中心Wolfgang Denk[以下简称W.D]本人精湛专业水平和持着不懈的努力。当前,U-Boot项目正在他的领军之下,众多有志于开放源码BOOT LOADER移植工作的嵌入式开发人员正如火如荼地将各个不同系列嵌入式处理器的移植工作不断展开和深入,以支持更多的嵌入式操作系统的装载与引导。  

选择U-Boot的理由:  

① 开放源码;  

② 支持多种嵌入式操作系统内核,如Linux、NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS;  

③ 支持多个处理器系列,如PowerPC、ARM、x86、MIPS、XScale;  

④ 较高的可靠性和稳定性;  

⑤ 高度灵活的功能设置,适合U-Boot调试、操作系统不同引导要求、产品发布等;  

⑥ 丰富的设备驱动源码,如串口、以太网、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、键盘等;  

⑦ 较为丰富的开发调试文档与强大的网络技术支持;

目录结构

        * board 目标板相关文件,主要包含SDRAM、FLASH驱动;  

        * common 独立于处理器体系结构的通用代码,如内存大小探测与故障检测;

  * cpu 与处理器相关的文件。如mpc8xx子目录下含串口、网口、LCD驱动及中断初始化等文件;

  * driver 通用设备驱动,如CFI FLASH驱动(目前对INTEL FLASH支持较好)

  * doc U-Boot的说明文档;

  * examples可在U-Boot下运行的示例程序;如hello_world.c,timer.c;

  * include U-Boot头文件;尤其configs子目录下与目标板相关的配置头文件是移植过程中经常要修改的文件;

  * lib_xxx 处理器体系相关的文件,如lib_ppc, lib_arm目录分别包含与PowerPC、ARM体系结构相关的文件;

  * net 与网络功能相关的文件目录,如bootp,nfs,tftp;

  * post 上电自检文件目录。尚有待于进一步完善;

  * rtc RTC驱动程序;

  * tools 用于创建U-Boot S-RECORD和BIN镜像文件的工具;

主要功能

  U-Boot可支持的主要功能列表:

  * 系统引导;

  * 支持NFS挂载、RAMDISK(压缩或非压缩)形式的根文件系统;

  * 支持NFS挂载、从FLASH中引导压缩或非压缩系统内核;

  * 基本辅助功能 强大的操作系统接口功能;可灵活设置、传递多个关键参数给操作系统,适合系统在不同开发阶段的调试要求与产品发布,尤对Linux支持最为强劲;

  * 支持目标板环境参数多种存储方式,如FLASH、NVRAM、EEPROM;

  * CRC32校验,可校验FLASH中内核、RAMDISK镜像文件是否完好;

  * 设备驱动 串口、SDRAM、FLASH、以太网、LCD、NVRAM、EEPROM、键盘、USB、PCMCIA、PCI、RTC等驱动支持;

  * 上电自检功能 SDRAM、FLASH大小自动检测;SDRAM故障检测;CPU型号;

  * 特殊功能 XIP内核引导;

工作模式

  U-Boot的工作模式有启动加载模式和下载模式。启动加载模式是Bootloader的正常工作模式,嵌入式产品发布时,Bootloader必须工作在这种模式下,Bootloader将嵌入式操作系统从FLASH中加载到SDRAM中运行,整个过程是自动的。下载模式就是Bootloader通过某些通信手段将内核映像或根文件系统映像等从PC机中下载到目标板的FLASH中。用户可以利用Bootloader提供的一些命令接口来完成自己想要的操作。

启动流程

  大多数BootLoader都分为stage1和stage2两大部分,U-boot也不例外。依赖于cpu体系结构的代码(如设备初始化代码等)通常都放在stage1且可以用汇编语言来实现,而stage2则通常用C语言来实现,这样可以实现复杂的功能,而且有更好的可读性和移植性。

  1、 stage1(start.s代码结构)  U-boot的stage1代码通常放在start.s文件中,它用汇编语言写成,其主要代码部分如下:

  (1) 定义入口。由于一个可执行的image必须有一个入口点,并且只能有一个全局入口,通常这个入口放在rom(Flash)的0x0地址,因此,必须通知编译器以使其知道这个入口,该工作可通过修改连接器脚本来完成。

  (2)设置异常向量(exception vector)。

  (3)设置CPU的速度、时钟频率及中断控制寄存器。

  (4)初始化内存控制器 。

  (5)将rom中的程序复制到ram中。

  (6)初始化堆栈 。

  (7)转到ram中执行,该工作可使用指令ldrpc来完成。

        第一阶段源码分析http://blog.youkuaiyun.com/ce123/article/details/7304909

  2、 stage2(C语言代码部分)   lib_arm/board.c中的start armboot是C语言开始的函数,也是整个启动代码中C语言的主函数,同时还是整个u-boot(armboot)的主函数,该函数主要完成如下操作:

  (1)调用一系列的初始化函数。

  (2)初始化flash设备。

  (3)初始化系统内存分配函数。

  (4)如果目标系统拥有nand设备,则初始化nand设备。

  (5)如果目标系统有显示设备,则初始化该类设备。

  (6)初始化相关网络设备,填写ip,c地址等。

  (7)进入命令循环(即整个boot的工作循环),接受用户从串口输入的命令,然后进行相应的工作。

         第二阶段的源码分析http://blog.youkuaiyun.com/ce123/article/details/7318851


U-Boot命令解析 本文主要介绍了U-Boot中命令的定义方式以及U-Boot命令行下的部分命令功能和使用示例 阅读详情

相关推荐

u-boot分析 七 (添加u-boot命令,学习u-boot命令实现原理)

u-boot分析 七(添加u-boot命令,学习u-boot命令实现原理)本文目标:理解u-boot命令的实现原理。上一篇文章分析了u-boot是如何启动kernel的,其中就涉及到bootm命令,考虑到文章主题需要,当时并没有对bootm命令做过多的解释。然而,u-boot命令行又是u-boot及其重要的一部分。这篇文章,我们就通过实战来理解u-boot命令的实现原理。我们要做的很简单,就是添加一

老谢的自留地 8374

UBOOT介绍

U-boot全称 Universal Boot Loader,是遵循GPL条款的开放项目,uboot 是一个裸机代码,可以看作是一个裸机综合例程,执行启动内核的功能。补充:GPL条款(GNU General Public License,GNU通用公共许可证)是一种自由软件许可证,而GNU代表“GNU's Not Unix”,是开源的操作系统项目,大多数GNU系统使用开源的Linux内核,GPL条款保证了开源内核的自由性,使用GPL条款后,

qq_47258284的博客 5636

U-BOOT移植过程详解: u-boot.bin

申明   本着学习交流的原则, 将个人移植u-boot的过程做一个记录. 文章参考了csdn blog里面的很多内容, 有的已经记不得出处了, 只好把当时的摘要直接贴出来. 如果冒犯, 还请见谅. 如有侵权, 请与我邮件联系. 谢谢! u-boot.bin 这里的u-boot.bin指的是不包含SPL的stage2部分的代码. 它会被SPL搬移到RAM的某个地址处开始运行.

liuxin_john的专栏 6267

uboot介绍:介绍uboot的基本概念、用法和实现方式

uboot介绍

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 1万+

U-Boot启动流程详解

本章我们来详细的分析一下 uboot 的启动流程,理清 uboot 是如何启动的。表 32.1.1 中的“变量”值可以在 u-boot.map 文件中查找,表 32.1.1 中除了__image_copy_start以外,其他的变量值每次编译的时候可能会变化,如果修改了 uboot 代码、修改了 uboot 配置、选用不同的优化等级等等都会影响到这些值。在 u-boot.lds 中有一些跟地址有关的“变量”需要我们注意一下,后面分析 u-boot 源码的时候会用到,这些变量要最终编译完成才能确定的!

qq_28576837的博客 1434

u-boot顶层Makefile分析及u-boot启动流程分析

清理整个u-boot工程,包括编译出来的.o 、.h 、.bin 、 .imx 、.config 等,其中最重要的是.config,它是由使用u-boot的工程师来根据自己需要配置出来的文件,所以在清除时最好备份一下.config。

qq_42745986的博客 1227

U-Boot介绍及U-Boot常用命令

U-Boot,全称为Das U-Boot,是一个开源的引导加载程序,主要用于嵌入式系统中。U-Boot可以引导多种操作系统,如Linux、FreeBSD等,并支持多种架构,如ARM、x86、PowerPC、MIPS等。它的主要功能是初始化硬件、加载操作系统内核以及启动操作系统。

weixin_61385844的博客 3296

U-boot 对UEFI的支持

U-boot 对UEFI的支持 如何?

heshuangzong的博客 4426

Uboot介绍

重置向量地址(Reset Vector Address)是指在计算机系统中,当系统启动或发生复位时,处理器将跳转执行的指令的内存地址。该地址通常是固定的,并由硬件设计决定。在不同的处理器架构中,重置向量地址的具体位置和表示方式可能会有所不同。以下是一些常见的处理器架构的重置向量地址示例:在 x86 架构中,重置向量地址为 0xFFFFFFF0。

墨染锦年的博客 1万+

U-Boot 之六 详解 U-Boot 及 SPL 的链接脚本、启动流程

我们可以将 U-Boot 的启动过程划分为两个阶段:芯片初始化 和 板级初始化。芯片初始化阶段的代码主要是位于 `./arch/架构/cpu` 目录下,其中再根据架构的不同来区分,主要以汇编语言为主

技术干货 1万+

全网最全面最易懂的U-Boot解读

看了上面的源码目录结构,不知你是否发现,它跟内核的目录结构有一定的相似,仔细想想就不难明白,其实u-boot就是一个嵌入式系统,他跟那些大的,复杂的系统本质上并没有区别,都是可以让一个平台正常的工作,有驱动,文件系统,网络子系统,post,也有运行其上的应用程序等等,只是他只支持单进程,不能提供像linux中的复杂调度机制,虽然也有上面那些子系统,但是整个结构很简单,只能实现最基本的功能。总体而言,U-Boot和Linux都是复杂的开源项目,它们的开发难度取决于开发者的经验、背景知识和所涉及的具体任务。

robin__su的博客 2万+

u-boot移植篇——了解u-boot

文章目录U-Boot如何下载 U-Boot 对于嵌入式玩家来说,uboot是再熟悉不过的了,它属于BootLoader的一种,而BootLoader是在操作系统内核运行之前运行,也就是引导硬件从上电到操作系统的过程,BootLoader就是这么一段小程序(当然在这之前还有一段存在于硬盘MBR中的启动代码,这就不描述了)。 宏观的看,BootLoader主要的工作就是初始化硬件设备、建立内存空间的映射表,最终创建一个适当的系统软硬件环境。 微观的看BootLoader程序会先初始化 DDR 等外设,然后将 L

大大棋的博客 3577

毕业设计——基于卷积神经网络的高速公路团雾智能识别系统设计与实现(数据集+源码+可视化+综述)

同时,也可以结合其他技术,如雷达、红外传感器等,实现多源信息的融合与协同处理,提高系统的可靠性和稳定性。实验结果表明,该系统能够实现对高速公路团雾的准确、快速识别,为高速公路的安全运行提供了有力保障。团雾作为一种常见的气象现象,具有突发性、局地性和消散迅速的特点,对高速公路的行车安全构成严重威胁。通过设计合适的网络结构,如增加卷积层、池化层等,实现对图像中团雾特征的自动学习和提取。预处理:对采集到的图像进行去噪、增强等预处理操作,以提高图像质量,降低后续处理的难度。读取数据,随机分为训练集和验证集。

abackcab的博客 668

u-boot 之spl

写的很容易理解

mudawei1的博客 3249

高速SerDes均衡技术解析

均衡技术是高速SerDes链路中补偿信道损耗和失真的核心技术,通过FFE、CTLE和DFE三种主要方法对抗码间干扰(ISI)。FFE在发射端预补偿前光标干扰,CTLE通过提升高频增益补偿信道损耗,DFE则精准消除后光标干扰。三种技术各具优势:FFE实现简单且不放大噪声,CTLE功耗低易于集成,DFE能自适应调整且保持信噪比。这些技术协同工作可有效提升系统传输速率和可靠性。

一只豌豆象的博客 1948

从零开始 使用OMNET++结合VEINS,INET和SUMO的联合仿真

搭建仿真的环境,导入VEINS和INET开源库,使用INET库中提供的网络协议和功能模型来模拟通信协议和网络功能,使用SUMO创建道路网络和车辆轨迹,并导出到OMNeT++中 在OMNeT++中使用VEINS通过socket和SUMO连接,借助VEINS实现的TRACI接口来设置车辆相关的行为和场景,最后在OMNET++中结合VEINS,SUMO和INET运行联合仿真实验,并分析车辆在遇到紧急情况下的通信状况和具体行为

mjmmm的博客 1万+

U-Boot简介

U-Boot简介 一、什么是U-Boot Linux 系统要启动就必须需要一个 bootloader 程序,也就说芯片上电以后先运行一段bootloader程序。这段bootloader程序会先初始化DDR等外设,然后将Linux内核从flash(NAND,NOR FLASH,SD,MMC 等)拷贝到 DDR 中,最后启动 Linux 内核。 uboot是一个裸机程序,比较复杂。 uboot就是一个bootloader,作用就是用于启动Linux或其他系统。Uboo最主要的工作就是初始化DDR。因为L

ypf的博客 4250

YOLO格式数据集划分

YOLO格式的数据集划分 标题标签格式txt import os import cv2 import random from PIL import Image # os.makedirs('labels_train') # os.makedirs('labels_val') img_train_path ='./img_train/' #图片训练集保存路径 img_val_path = './img_val/' #图片验证集保存路径 labels_train_path = './labels_t

weixin_51154380的博客 3308

U-Boot 简介

U-Boot 简介 1、Linux 系统要启动就必须需要一个 bootloader 程序,也就说芯片上电以后先运行一段bootloader程序。这段 bootloader程序会先初始化 DDR等外设,然后将 Linux内核从 flash(NAND,NOR FLASH, SD, MMC 等)拷贝到 DDR 中,最后启动 Linux 内核。 2、有很多现成的 bootloader 软件可以使用,比如 U-Boot、 vivi、 RedBoot 等等,其中以 U-Boot 使用最为广泛. 3、uboot 的全称是

嵌入式技术 2503

华为OD机试双机位C卷-用户入网定期复评(C/C++/Py/Java/Js/Go)

华为OD机试(机考)双机位C卷 【用户入网定期复评】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【用户入网定期复评】。

qq_45776114的博客 839

强化学习原理及应用作业之动态规划算法【SYSU_2023SpringRL】

本次实践作业将在以下环境进行: 该环境由一个 6×6 网格组成,其中黄色圆圈为智能体出发点,黑色格子为无法通过的墙壁,若智能体向着墙壁方向移动,则会停留在原地,地图边界的移动同理。带有黄色边框的格子为终止状态,即若智能体行动至此状态则整个 episode 结束。红色和绿色表示当前该状态的奖励值,奖励越高则绿色越深,奖励越低则红色越深。状态空间:36(0-35 这 36 个整数,左下角为 0,向右 +1,向上 +6)动作空间:4(0-3 这 4 个整数分别代表左、右、上、下)奖励函数:普通格子 -0.1,到

zik的博客 1398

u-boot介绍与u-boot启动流程介绍

Bootloader是在操作系统运行之前执行的一小段程序,通过这一小段程序,可以初始化硬件设备、建立内存空间的映射表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备。

szq0909的博客 1210

零基础教你学RDMA驱动开发:从入门到精通--第6章 内存管理与DMA映射​6.2 DMA地址转换:内核dma_map_single()与硬件IOVA(I/O虚拟地址)​

本文深入探讨RDMA驱动中DMA地址转换机制,重点分析内核dma_map_single()函数与硬件IOVA的作用。主要内容包括:1)DMA地址转换的必要性,解决CPU虚拟地址与HCA设备DMA地址的空间割裂问题;2)内核DMA映射机制实现原理,涵盖无IOMMU(直接物理地址映射)和有IOMMU(IOVA转换)两种场景;3)硬件IOVA的工作流程及其与RDMA内存注册的结合;4)RDMA驱动开发中的关键问题,如缓存一致性、映射方向错误、IOVA泄漏等;5)以mlx5驱动为例的实践分析。文章强调DMA地址转换

xiaoheshang_123的博客 240

U-Boot 浅析

U-boot介绍

安迪西_嵌入式攻城狮 5267

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

U-Boot移植教程之一:U-Boot分析与启动过程

一、Bootloader的引出 当系统上电时,并不是直接进入Linux系统的,而是需要先执行一段程序来把单片机的硬件外围初始化好,比如:看门狗、单片机时钟、存储控制器等。如果这段程序能将操作系统内核复制到内存中运行,无论是从本地(比如Flash)还是从远端(比如网络)就称这段程序位Bootloader。 简单地说,Bootloader就是上电时就开始执行,初始化硬件设备为操作系统准备好执行环境,最后调用操作系统内核。 Bootloader还可以具有通过串...

qlexcel的专栏 1783

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: Linux Pthread
下一篇: [转载]NandFlash详述
tmcrazy
博客等级 码龄18年 21粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值