【Qzone】这个比较有趣 总结一下笔记

正点原子嵌入式linux驱动开发——U-boot启动流程详解 正点原子linux驱动开发的学习笔记,这一篇是uboot的源码解读,来学习uboot的启动详细流程 阅读详情
2014-10-26 02:24


这个比较有趣 总结一下笔记


搞到这个点,我也是醉了。


内容:
在uboot中添加不带参数的led命令
和带参数的led on 及led off命令
通过ubuntu的kermit终端 控制mini2440上的灯


首先
在目录u-boot-1.1.6/common/下新建一个cmd_led.c文件或复制一个cmd_bdinfo.c改名为cmd_led.c文件
建议复制再修改


然后
修改cmd_led.c文件
找到命令框架
U_BOOT_CMD(
name,maxargs,rep,cmd,usage,help
)//6个参数


更改为如下:
修改前
U_BOOT_CMD(
bdinfo, 1, 1, do_bdinfo,
"bdinfo - print Board Info structure\n",
NULL
);
修改后
U_BOOT_CMD(
led, 1, 1, do_led,
"led - control the led on the mini2440\n",
NULL
);
修改do_dbinfo()函数:
注意,我们用的是ARM板子
#else /* ARM */所以修改下面的代码
修改后如下:
int do_led ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
{
rGPBCON=0x15400;//开启4个LED灯
rGPBDAT=0x00;//4个LED灯 亮
return 0;
}


还有注意make时 
要在此路径command/MakeFile下的
MakeFile文件中cmd_bdinfo.o旁边或后面添加cmd_led.o


此时在ubuntu终端中执行make 会报错
如下:
cmd_led.c: In function 'do_led':
cmd_led.c:244: error: 'rGPBCON' undeclared (first use in this function)
cmd_led.c:245: error: 'rGPBDAT' undeclared (first use in this function)


解决方法1:
像裸机程序一样加入头文件 在2440addr.h中找到如下代码 并且复制添加到cmd_led.c文件中
如下:
#define rGPBCON (*(volatile unsigned *)0x56000010) //Port B control
#define rGPBDAT (*(volatile unsigned *)0x56000014) //Port B data


此时再make一下 没出错
arm-linux-objcopy --gap-fill=0xff -O binary u-boot u-boot.bin
成功生成u-boot.bin文件 下载 测试


烧写生成的u-boot.bin文件到mini2440
上电后
ubuntu端的kermit显示如下:
U-Boot 1.1.6 (Oct 26 2014 - 00:31:39)


DRAM: 64 MB
Atmel: AM29LV160DB (16Mbit)
Flash: 2 MB
In: serial
Out: serial
Err: serial
SMDK2410 # 




默认此时mini2440开发板上亮两个灯 正常


此时 在终端输入命令led
后按回车键
mini2440开发板上4个LED灯亮 成功完成led命令的添加


下面用第二种
添加头文件的方法(也建议在以后的开发中用这种方法)


将第一种方法中的
#define rGPBCON (*(volatile unsigned *)0x56000010) //Port B control
#define rGPBDAT (*(volatile unsigned *)0x56000014) //Port B data
用代替
#include<s3c24x0.h>
代替


在目录include/s3c24x0 下的s3c24x0.h文件中
修改如下:
#if 0
改为
#if 0


代码会由灰色变为彩色 有效


因为其中屏蔽了以下代码 修改使其有效
#define rGPBCON (*(volatile unsigned *)0x56000010)
#define rGPBDAT (*(volatile unsigned *)0x56000014)


保存后 再次make


此时会报错如下:
In file included from cmd_led.c:36:
/home/devwang/u-boot-1.1.6/include/s3c24x0.h:563: error: 'S3C24X0_SPI_CHANNELS' undeclared here (not in a function)


解决方法
在s3c24x0.h文件中
Ctrl+F找到该S3C24X0_SPI_CHANNELS结构体 
用/**/将其屏蔽掉即可


修改如下:
修改前
typedef struct {
S3C24X0_SPI_CHANNEL ch[S3C24X0_SPI_CHANNELS];
} /*__attribute__((__packed__))*/ S3C24X0_SPI;
修改后
typedef struct {
/* S3C24X0_SPI_CHANNEL ch[S3C24X0_SPI_CHANNELS];*/
} /*__attribute__((__packed__))*/ S3C24X0_SPI;


再次make OK
下载 烧写 输入led命令 四个灯亮 OK


其他方法:
将
#if 1
改回原来的
#if 0


补充:
寄存器名不加r 
但裸机中使用时一般加r
现在改rGPBDAT 为GPBDAT


if(strcmp(argv[1],"on")==0)
{
GPBDAT=0x0;
}
if(strcmp(argv[1],"off")==0)
{
GPBDAT=0x7ff;
}


带参数的命令:
如led命令后面增加参数
led on
led off


修改代码如下:
if(strcmp(argv[1],"on")==0)
{
GPBDAT=0x0;
}
if(strcmp(argv[1],"off")==0)
{
GPBDAT=0x7ff;
}


再改:
S3C24X0_GPIO 结构体


S3C24X0_GPIO gpio;//定义结构体变量
gpio.GPBCON=0x15400;
if(strcmp(argv[1],"on")==0)
{
gpio.GPBDAT=0x0;
}
if(strcmp(argv[1],"off")==0)
{
gpio.GPBDAT=0x7ff;
}


补充:
char *argv[]
位置参数 argv


保存,make,烧写,上电
依然才亮两个灯(默认)
说名上面代码无效 但确实执行了那段代码 
可用print查看是否执行
代码如下:
cmd_led.c


gpio.GPBCON=0x15400;
printf("**********start\n");
if(strcmp(argv[1],"on")==0)
{
gpio.GPBDAT=0x0;
printf("**********on\n");
}
if(strcmp(argv[1],"off")==0)
{
gpio.GPBDAT=0x7ff;
printf("**********off\n");
}




输出结果如下
U-Boot 1.1.6 (Oct 26 2014 - 01:27:40)


DRAM: 64 MB
Atmel: AM29LV160DB (16Mbit)
Flash: 2 MB
In: serial
Out: serial
Err: serial
SMDK2410 # 
SMDK2410 # led 
**********start
SMDK2410 # led on
**********start
**********on
SMDK2410 # led off
**********start
**********off
SMDK2410 # 


但还是只亮两个灯
为什么不亮4个灯呢?


注意:
led
led on
led off
给指令加一个参数后要修改如下代码:


修改前
U_BOOT_CMD(
led, 1, 1, do_led,
"led - control the led on the mini2440\n",
NULL
);
修改后
U_BOOT_CMD(
led, 2, 1, do_led,
"led - control the led on the mini2440\n",
NULL
);


六个参数解释:
#name,maxargs,rep,cmd,usage,help
#name:命令的名称
#maxargs:最多的参数个数
#rep:是否允许重复执行 重复 SMDK2410# 没命令 回车
#cmd:执行的命令函数
#usage:简要的说明
#help:帮助


回答上个为什么。
因为在 定义gpio时没有指定物理地址
地址 GPBCON GPBDAT 的地址没写 结构体中
gpio要指向一个物理地址 而非随机分配 即指向寄存器所在的地址


那么如何让让gpio指向0x56000000(不同板子地址不一样 查数据手册)


使用S3C24X0_GetBase_GPIO() 函数
其返回值为return S3C24X0_GPIO_BASE
0x5600000


故修改如下:
S3C24X0_GPIO *gpio=S3C24X0_GetBase_GPIO();//指向0x56000000
gpio->GPBCON=0x15400;
if(strcmp(argv[1],"on")==0)
{
gpio->GPBDAT=0x0;
}
if(strcmp(argv[1],"on")==0)
{
gpio->GPBDAT=0x7ff;
}


补充:
此处*gpio为指针类型
而非原来的gpio结构体变量
故点“.”号
改为径箭头“->”号


make一下
出错:
/home/devwang/u-boot-1.1.6/common/cmd_led.c:255: undefined reference to `S3C24X0_GetBase_GPIO'


在cmd_led.文件中
加入头文件
#include<s3c2410.h>


因为
u-boot1.1.6/include/s3c2410.h
里面有函数
static inline S3C24X0_GPIO * const S3C24X0_GetBase_GPIO(void)
{
return (S3C24X0_GPIO * const)S3C24X0_GPIO_BASE;
}


再次make OK
arm-linux-objcopy --gap-fill=0xff -O binary u-boot u-boot.bin


把生成的u-boot.bin烧写到2440上
终端显示如下:


U-Boot 1.1.6 (Oct 26 2014 - 01:58:06)


DRAM: 64 MB
Atmel: AM29LV160DB (16Mbit)
Flash: 2 MB
In: serial
Out: serial
Err: serial
SMDK2410 # led on
SMDK2410 # led off
SMDK2410 # led on
SMDK2410 # led off
SMDK2410 # 


结果:
输入led on 命令后
回车
2440上4个灯亮
输入led off 命令后
回车
2440上4个灯灭
输入led on 命令后
回车
2440上4个灯亮
输入led off 命令后
回车
2440上4个灯灭


亲测可行 OK !!!
Linux之GTK系列教程 00、背上行囊1——程序员学习之道 01、背上行囊2——为什么要学习GTK 02、背上行囊3——GUI概述 03、背上行囊4——GTK简介 04、背上行囊5——GTK环境搭建( Linux ) 05、背上行囊6——GTK环境搭建( windows ) 06、踏上旅途1——一个简单的空白窗口 07、踏上旅途2——控件的添加 08、踏上旅途3——布局容器之水平布局 09、踏上旅途 阅读详情

相关推荐

Windows 11/10系统盘被BitLocker锁了别慌!手把手教你用manage-bde命令找回密钥并解锁

本文详细介绍了当Windows 11/10系统盘被BitLocker锁定后的恢复方法,重点讲解了如何使用manage-bde命令行工具找回密钥并解锁加密驱动器。通过进入Windows恢复环境、诊断锁定状态、提取恢复密钥ID以及执行解锁操作等步骤,帮助用户有效解决BitLocker锁定问题,同时提供了后续防护优化建议和高级故障排除技巧。

weixin_42542669的博客 1460

U-Boot编译——System.map与u-boot.map

U-Boot编译之后会在其顶级目录中生成System.map和u-boot.map两个文件: 1、System.map 该文件按链接地址由小到大的顺序列出所有符号: 由上面信息可知,_start符号被链接在最前面的地址0x33f80000,它是U-Boot的入口。SDRAM初始化完成后,需要将U-Boot加载到上述地址(SDRAM初始化前,U-Boot在Nor Flash或者芯片内部RAM中运行...

su1041168096的博客 952

知识图谱_知识图谱 | 知识图谱做用户画像

导读:最近一直在思考怎么用知识图谱做推荐,但是目前能知道的内容都是基于路径的推荐和基于图特征的推荐,所以能不能换一个角度,探究一下用知识图谱怎么做用户画像,因为画像也是推荐系统重要的一部分。现在的知识图谱+推荐怎么做的传统的用户画像怎么做现在的知识图谱+推荐怎么做的?基于路径:可以理解成基于图谱的多路径召回,或者多路径推荐,然后根据路径的转移概率进行排序从而达到推荐的效果,基于路径比较适合简单的推...

weixin_28801659的博客 1460

U-Boot 浅析

U-boot介绍

安迪西_嵌入式攻城狮 5266

java实现自动发送微信QQ消息(可发图片)

自动发送微信/QQ/微博等消息 一:功能:实现发送QQ/微信/微博消息,程序控制。 效果演示(实现自动发生QQ微信消息给女友,发微博信息也可以就不演示了) 二:原理讲解:将剪贴板的内容给发送到QQ微信中去,复制粘贴发送。 模拟真实操作进行发送信息。 三:前期准备,软件安装,及初步测试。...

XURUNFA950827的博客 1万+

yolov5直接调用zed相机实现三维测距(python)

zed代码比较简洁,但是一定要把环境配置好,后续自己会把他当做普通双目标定,去对比分析效果,并完善相关功能。

积极向上的mr.d的博客 1万+

关于uboot.map 文件的作用

用make命令编译时自动生成的,里面包含所有的函数逻辑地址.printf("0x%x\n", function_name); /* 这个逻辑地址,可以在u-boot.map里找到对应的函数名,用于是debug查错,相当好,例如函数指针. */实际上,kernel开发,也常常用sy

咕唧咕唧shubo.lk的专栏 6280

蓝牙攻防实战:蓝牙技术详解

蓝牙作为轻量级、低功耗的无线通信技术,其设计兼顾了效率与灵活性,但也留下了诸多安全隐患。随着物联网设备的爆发式增长,蓝牙的攻击面也在不断扩大。理解其底层通信机制、协议栈结构以及配对加密逻辑,是提升无线安全防护能力的关键。

idlecloud0105的博客 738

也说QQ的QZONE

 QQ的东西,一直以来不是很喜欢,感觉就是一个圈套圈,让人不断在这个圈钻进另一个圈,总之就是圈钱,但它经过这么多年的积累,已经聚集了太多的人气,让人很难割舍,还有说到最大的一个圈就是圈人;就好象QQ游戏,凭着强大的人气,很快就打败了联众和中国游戏中心.真是让人敢怒不敢言.说到QQ的技术,那就是跟风,从来没有走在技术时代的潮流,见网络游戏比较火热,就开通了QQ游戏和QQ幻想,结果是联众和中国游戏中心

33KE 964

Oracle EBS和华为MetaERP在会计科目(COA)设计上的观察非常精准。这两种设计确实代表了两种截然不同的系统架构思想,我们可以从设计哲学、优劣对比和演进关系三个方面进行深入分析。

OracleEBS与华为MetaERP的COA设计对比分析 OracleEBS采用弹性域架构,通过固定段数字符串实现多维度核算,强调稳定性和全球统一标准,但修改成本高、扩展性受限。华为MetaERP采用解耦架构,将核算单元、自然科目和核算维度分离,支持动态扩展和灵活调整,更适合业务快速变化的企业。 OracleEBS优势在于强一致性和成熟稳定,劣势是灵活性差;华为MetaERP优势是极致灵活性,劣势是对管理要求高。两者代表了不同时代的企业软件设计理念:OracleEBS适合标准化需求,MetaERP则面向快

金牌架构师 429

代数拓扑与AI架构:AI应用架构师深入探索数学研究如何分析复杂系统的结构特性

随着人工智能技术的飞速发展,AI系统变得越来越复杂。AI应用架构师需要有效的工具和方法来理解、设计和优化这些复杂系统。代数拓扑作为数学的一个分支,提供了独特的视角和技术来分析复杂系统的结构特性。本文旨在帮助AI应用架构师深入了解代数拓扑,以及如何将其应用于AI架构设计中,提升对复杂系统的分析能力。首先,我们会介绍代数拓扑和AI架构相关的核心概念及其联系,通过有趣的故事引入主题,让读者轻松理解复杂概念。接着,深入探讨代数拓扑的核心算法原理,结合具体的编程语言代码示例详细阐述。

大模型应用工坊 668

Qzone 超级补丁热修复方案原理

介绍 Qzone 超级补丁技术基于dex分包方案,使用了多dex加载(multidex)的原理,大致的过程就是:把BUG方法修复以后,放到一个单独的dex文件,然后插入到dexElements数组的最前面,让虚拟机去加载修复完后的方法。 该方案的灵感来源? 没错就是类加载机制,相信大部分同学都对它有所了解吧。 ClassLoader 类加载机制 Android应用程序本质上使用的是j...

小嵩的博客 6296

PCL 点到面的ICP算法【2024最新版】

经典的点到面的ICP算法。博客长期更新,本文最新更新时间为:2024年10月18日。

点云侠的博客 36万+

Qzone,你能不能用点心

笔者一直都还算是个心胸比较宽广的人,不会像小女人或者泼妇一样为了点芝麻绿豆的小事常常会骂了整条街,然而,有些话笔者确又不好不讲,讲了,别人也未必有心去听,总之,作为一个IT业者,为了我们整个集团的利益,今天也要站在振臂一呼,腾讯,你能不能用点心。用过QQ的人,一定逛过Qzone,哪怕自己没开通,也许还是会不小心点击到朋友的Qzone链接。idea不错,内容却让我大失所望。每次弹出页面之后,我都会卖

acRush7的专栏 874

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Qzone是Blog吗?

2006年12月13日21:18     今个儿无意之中,点了一个qq好友的签名,得到一个response“对不起,该空间设置为只允许密友”,很是意外,以前一直觉的qzone没什么价值,毕竟一个孤零零的blog,如果没有一个很有人气的内容平台,是很难找到读者,这估计也是为什么sina ,sohu还有一些主题社区才能把中国的blog事业发扬光大。而qzone看起来就是一个一个孤零零的小岛。    猛

汉广 1347

深度学习工具包 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")

Eric的QZONE模仿工程 一期

 QZONE大家基本都玩过了吧, 起先它只是个在线日记, 现在可以放满好玩的动画图片在上面, 吸引了无数的萝莉和正太花零花钱玩...呵呵有需求是因为有市场, 最近找不到满意的工作, 在家闲着还是闲着, 做个QZONE玩玩好了 ^_^先做了个空白页面, 放了一些动画图片上去, 可以随便拖动放置, 也可以用右键点击清除. 所有可控制的元素在这里统称为物件, 目前只是动画图片这一种.菜单功能: 1. 保

Poor Eric >_< 1998

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

QZone

找了个简洁的风格皮肤,写了一篇告示,诞生了QZone…… 转载于:https://www.cnblogs.com/kay/archive/2008/10/11/1308737.html

weixin_30636089的博客 317

热修复学习总结-QZone

Qzone实现方案原理:QZone采用的是dex分包方案,其基本原理就是将修复bug改动的class文件打包成一个新的patch.dex文件,然后将这个patch.dex文件放在classloader的最前面,如下图 在这里,我们假设出现bug的类是A.class。此时在classloader中的dex文件中存在两个版本的A.class,一个在patch.dex中,另一个假设在classes.

u014162857的专栏 566

我的Qzone记录

2008年04月,我在Qzone安家啦!<br />2008年11月,我认真地写下了第一篇日志:《有一种爱... 》<br />2008年05月,我学会了如何上传照片给朋友看;<br />2008年10月,空间迎来了第一位留言的朋友; <br />这些年,QQ空间变成了我凝结记忆,回味生活的地方。 <br /><br /><br /><br />我五年来最难忘的事: <br />丢了自己的幸福,舞蹈 http://www.wudaoke.com 版权所有,丢了猪 <br /><br />对空间好友最想说的一

lq6591if43yi的专栏 164

Qzone-API使用教程

本教程旨在指导您了解并使用[Qzone-API](https://github.com/SmartHypercube/Qzone-API.git)这一开源项目。它提供了一套接口来方便地操作QQ空间,下面是该项目的核心组成部分分析: ## 1. 项目目录结构及介绍 ``` Qzone-API/ ├── LICENSE.txt # 许可证文件 ├── README.md ...

gitblog_00774的博客 592

【亲测免费】 Qzone-API 使用教程

Qzone-API 是一个基于 GitHub 的开源项目,由 SmartHypercube 开发维护。该项目旨在提供一个简洁易用的接口来实现对腾讯QQ空间的自动化操作。通过这个API,开发者可以轻松地实现如发表说说、上传图片、管理日志等功能,无需依赖复杂的浏览器模拟或官方SDK,为QQ空间的二次开发和自动化任务提供了极大的便利。 ## 项目快速启动 ### 安装 首先,确保你的系统中已安装了...

gitblog_00638的博客 1049

Swagger-Codegen 生成的 Eiffel 客户端 STORE_API 实战指南:订单管理与库存查询接口全解析

本篇指南围绕 swagger-codegen 为 Eiffel 语言生成的 Petstore 示例客户端中的 `STORE_API` 类展开,完整解析其四个订单/库存相关端点的签名、参数、鉴权与返回类型,并结合仓库内生成的 Eiffel 源码、测试与底层 `API_CLIENT` 框架,讲清每次 HTTP 调用从路径构建、鉴权注入到 JSON 序列化/反序列化的完整链路。读完本文,你将掌握如何阅读

gitblog_01160的博客 1017

模仿QZONE挂图效果

QZONE大家基本都玩过了吧, 起先它只是个在线日记, 现在可以放满好玩的动画图片在上面, 吸引了无数的萝莉和正太花零花钱玩...呵呵(不兼容垃圾FF)这是个纯粹的真正意义上的 AJAX 实例, 服务端ASPX非常简单可以不看, 客户端脚本中使用了 JS(废话^_^), HtmlDom, XmlDom, XmlHttp.先做了个空白页面, 放了一些动画图片上去, 可以随便拖动放置, 也可以

高山流水 965
上一篇: mtklog 日志到一定条件自动删除
下一篇: 【Qzone】缘何似个愁 第二步 编译Android源代码
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值