S3C JZ2440 USB 驱动程序完整

JZ2440 V2的OpenJTAG驱动安装(USB接口的) win7 64位机 本文血洗自己的安装耻辱,一个礼拜(7个晚上)的折腾。 具体步骤见流程(安装需要进行三次,具体三次安装后得到的结果见最后一个截图红色标记)。        1.插入OpenJTAG的USB到PC机上,然后电脑会有安装驱动的提示,等待...无法安装后进入管理器,如下图,右击需要安装驱动的端口依次进行下面几步操作。 2.进行相应操作,主要是能够进去到第3步骤。 阅读详情
/* 参考例子:drivers\hid\usbhid\usbmouse.c
 * 功能:完整的USB驱动程序
 *
 * 2016年6月23日21:37:10
 */


#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/usb/input.h>
#include <linux/hid.h>


static struct input_dev * uk_dev;
static char * usb_buf;//虚拟地址
static dma_addr_t usb_buf_phys;//物理地址
static struct urb *uk_urb;
static int len;


static void usbmouse_as_key_irq(struct urb *urb)
{
static unsigned char pre_val;
#if 0
int i;
static int cnt = 0;
printk("data cnt &d:",++cnt);

for(i = 0;i < len; i++)
{
printk("%02x",usb_buf[i]);
}

printk("\n");


#endif


/* USB鼠标数据的含义
* data[0]: bit0-左键,1-按下,0-松开
*   : bit1-右键,1-按下,0-松开
*   : bit2-中键,1-按下,0-松开
*/


if(pre_val & (1<<0) != usb_buf[0] & (1<<0))
{
/*左键发生变化*/
input_event(uk_dev,EV_KEY,KEY_L,(usb_buf[0] & (1<<0)) ? 1 : 0);
input_sync(uk_dev);


}


if(pre_val & (1<<1) != usb_buf[0] & (1<<1))
{
/*左键发生变化*/
input_event(uk_dev,EV_KEY,KEY_S,(usb_buf[0] & (1<<1)) ? 1 : 0);
input_sync(uk_dev);


}


if(pre_val & (1<<2) != usb_buf[0] & (1<<2))
{
/*左键发生变化*/
input_event(uk_dev,EV_KEY,KEY_ENTER,(usb_buf[0] & (1<<2)) ? 1 : 0);
input_sync(uk_dev);


}


/*记录上一个值*/
pre_val = usb_buf[0];



/* 重新提交urb */
usb_submit_urb(uk_urb, GFP_KERNEL);
}






/* 对 USB_DEVICE 宏进行分析
 * #define USB_DEVICE(vend,prod) \
 * .match_flags = USB_DEVICE_ID_MATCH_DEVICE, .idVendor = (vend), \
 * .idProduct = (prod)
 *
 * 该宏定义支持的厂家ID,和设备ID
 */
 
/* 对 USB_INTERFACE_INFO宏分析:
 * #define USB_INTERFACE_INFO(cl,sc,pr) \
 * .match_flags = USB_DEVICE_ID_MATCH_INT_INFO, .bInterfaceClass = (cl), \
 * .bInterfaceSubClass = (sc), .bInterfaceProtocol = (pr)
 *
 * 
 * match_flags:表示匹配这个设备描述符里面的哪一项,
 * USB_DEVICE_ID_MATCH_INT_INFO表示匹配接口信息(接口的信息在接口描述符里),
 * 只要接口描述符里面的接口类.bInterfaceClass是cl(什么东西),
 * 接口描述符里的接口子类.bInterfaceSubClass是sc(什么东西),
 * 接口描述符里的协议.bInterfaceProtocol是pr(什么东西),就能支持
 */




/* 只要usb设备的接口描述符里的类是HID类,子类是BOOT,协议是MOUSE就能支持
 *
 */
static struct usb_device_id usbmouse_as_key_id_table [] = {
{ USB_INTERFACE_INFO(USB_INTERFACE_CLASS_HID, USB_INTERFACE_SUBCLASS_BOOT,
USB_INTERFACE_PROTOCOL_MOUSE) },
/*该宏的定义指定了usb设备驱动程序只支持某个厂家生产(0x1234)的某款产品(0x5678)*/
// {USB_DEVICE(0x1234,0x5678)}, 
{ } /* Terminating entry */
};




/*注册驱动后,usb_bus_type中的match函数把usb_interface和usb_driver的id_table比较
 * 若能匹配成功,则调用usb_driver中的usbmouse_as_key_probe函数。
 */
static int usbmouse_as_key_probe(struct usb_interface *intf, const struct usb_device_id *id)
{
/*通过接口得到usb_device结构体*/
struct usb_device *dev = interface_to_usbdev(intf);
struct usb_host_interface *interface;
struct usb_endpoint_descriptor *endpoint;
/*获取usb接口结构体中的usb_host接口结构体*/
interface = intf->cur_altsetting;
/*获取usb_host接口结构体中的端点描述结构体*/
endpoint = &interface->endpoint[0].desc;


int pipe 


/*a.分配一个input_dev结构体*/
uk_dev = input_allocate_device();
/*b.设置*/
/*b.1能产生哪类事件*/
set_bit(EV_KEY,uk_dev->evbit);
set_bit(EV_REP,uk_dev->evbit);
/*b.2能产生哪些事件*/
set_bit(KEY_L,uk_dev->keybit);
set_bit(KEY_S,uk_dev->keybit);
set_bit(KEY_ENTER,uk_dev->keybit);


/*c.注册*/
input_register_device(uk_dev);

/*d.硬件相关的操作*/
/*数据传输三要素:源,长度,目的*/


/* 源:usb设备的某个端点
* 把指定usb设备的指定端口设置为一个控制IN端点
* 创建管道,用于连接驱动程序缓冲区和设备端口
*/
pipe = usb_rcvintpipe(dev, endpoint->bEndpointAddress);


/*长度:
* 是端点描述符里面的最大包大小
*/
len = endpoint->wMaxPacketSize;
/* 目的:
* 这就是驱动程序缓冲区了,usb_buffer_alloc函数同时分配物理地址和虚拟地址,
* 当usb主机控制器查询到有数据时,会将数据存放到usb_buf_phys缓冲区中,
*/
 
usb_buf = usb_buffer_alloc(dev, len, GFP_ATOMIC, &usb_buf_phys);


/*使用三要素:*/


/* URB处理流程:
* (1)USB设备驱动程序创建并初始化一个访问特定USB设备特定端点的urb,并提交给USB core
* (2)USR core提交该urb到到USB总线驱动程序。
* (3)USB总线驱动程序根据该urb描述的信息,来访问usb设备
* (4)当设备访问结束后,USB总线驱动程序通知USB设备驱动程序。
*
*/

/* 分配usb request block */
uk_urb = usb_alloc_urb(0, GFP_KERNEL);

/* 使用"3要素设置urb" 
* 设置urb请求块,可以通过设置它来控制驱动程序与设备端点之间的通信
*
* usb主机控制器不断查询usb设备有无数据,当usb主机控制器查询到有数据时,
* 会将数据存放到usb_buf_phys缓冲区中,
* 会产生一个中断,usb总线驱动程序就会调用usb_fill_int_urb函数中的complete_fn(完成)函数。
* endpoint->bInterval是usb主机控制器查询usb设备的频率。
*/
//中断类型
usb_fill_int_urb(uk_urb, dev, pipe, usb_buf,len,usbmouse_as_key_irq, NULL, endpoint->bInterval);


/* usb主机控制器得到数据后,要往哪个物理地址写入数据
* 如果要操作读取的数据的话,则要用虚拟地址
*/
uk_urb->transfer_dma = usb_buf_phys;
/*设置某些标记*/
uk_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
/* 使用urb
* 提交urb给usb总线驱动程序驱动
*/
usb_submit_urb(uk_urb, GFP_KERNEL);
return 0;


}


/*拔掉usb设备后,则执行usbmouse_as_key_disconnect函数*/
static void usbmouse_as_key_disconnect(struct usb_interface *intf)
{
// printk("disconnect usbmouse!");


usb_kill_urb(uk_urb);
usb_free_urb(uk_urb);
usb_buffer_free(dev, len, usb_buf, usb_buf_phys);
input_unregister_device(uk_dev);
input_free_device(uk_dev);
}
}




/*分配/设置usb_driver结构体*/
static struct usb_driver usbmouse_as_key_driver = {
.name = "usbmouse_as_key",
.probe = usbmouse_as_key_probe,
.disconnect = usbmouse_as_key_disconnect,
.id_table = usbmouse_as_key_id_table,
};


static int usbmouse_as_key_init(void)
{
/*注册*/
usb_register(&usbmouse_as_key_driver);
return 0;


}


static void usbmouse_as_key_exit(void)
{
/*卸载*/
usb_deregister(&usbmouse_as_key_driver);
}


module_init(usbmouse_as_key_init);
module_exit(usbmouse_as_key_exit);
MODULE_LICENSE("GPL");
jz2440 的Linux内核vivi.c框架分析 内核文档: V4L2-framework.txt 一、测试虚拟驱动vivi 准备工作:安装xawtv sudo apt-get install xawtv 源码xawtv-3.95.tar.gz http://www.kraxel.org/releases/xawtv/ 在这个网站创建新的sources.list http://repogen.simplylinux.ch/ 1. 选择... 阅读详情

相关推荐

2440开发板烧写

要点: 1、easyopenjtag简称eop,openjtag简称op。op/eop是韦东山公司研发的,通过jtag协议。 2、op或者eop支持将代码烧写到Nor flash或nand flash,而市面上的jlink只能将代码烧写到nor flash中。 3、程序下载烧写可以分为2步:下载,烧写。下载和烧写是不同的概念 。 (1)下载是通过USB方式(如 dnw)、网络下载(如tftp),将代码下到sdram。 (2)烧写是通过nand flash驱动的 nand flash写入功能,将sdram中的

weixin_45519751的博客 671

JZ2440 usb设备驱动

/* 参考例子:drivers\hid\usbhid\usbmouse.c  * 功能:插入sub鼠标打印:鼠标操作则打印相应的信息  *  * 2016年6月20日22:51:16  */ #include #include #include #include #include #include static struct input_dev

zhangjianjun521的博客 1044

基于S3C2440的USB HOST裸机驱动,支持U盘和鼠标

基于S3C2440的USB HOST裸机驱动,支持U盘和鼠标 分享一位前辈的代码。

jz2440 win7 64位系统mini usb驱动无法兼容的解决方案,及其使用u-boot烧写Nand-flash的方法

问题:jz2440平台时,在Nor Flash上已经有了u-boot,使用u-boot烧写Nand-flash,在给miniusb口装《dnw烧写驱动win7》驱动时,驱动显示找不到该驱动,并在设备管理器中显示SEC S3C2410X Test B/D? 原因:不详! 解决方案:1.首先,下载SuperVivi-USB-Transfer-Tool软件。 2.为无法识别的SEC S3C

Chappie 2095

亲身实践s3c2440 gcc版本的USB HID和U盘裸奔代码

完全抛弃IDE,基于arm的gcc版本设计的USB设备。实现了HID鼠标和U盘的功能。 有问题联系我:woodsboy.cn@163.com

s3c2440/s3c2410 下的USB键盘驱动

s3c2440/s3c2410 下的USB键盘驱动 自己些的。有一点的改动

JZ2440笔记:USB设备驱动程序

(2)vi usbmouseaskey.c(读取设备描述符信息)(3)vi usbmouseaskey.c(增加输入子系统)(3)vi usbmouseaskey.c(增加上报按键)使用去掉自带的USB驱动的uImage。使用去掉自带的USB驱动的uImage。

maxiumII的专栏 802

WIN7 64位下的DNW和驱动,JZ2440也可用

WIN7 64位下的DNW和驱动,JZ2440也可用,亲自证实

JZ2440插入usbhub无法使用

感觉JZ2440的usb口太少了,只有一个usb host,个人感觉这是一个弊端,插了鼠标就不能插入键盘了,更不用说插u盘,摄像头,usb网卡了,感觉很很不爽。于是借朋友的usbhub插上试试,再插上鼠标,qt无反应, 今天通过usb-hub接了个3G手机模块到设备板上,无论如何不能识别到模块,在usb相应驱动加载后有一行提示:ignoring external hu

pang9998的博客 1349

ANSYS Workbench对称分析进阶:手把手教你用Pre-Meshed Cyclic Region处理外部导入的复杂网格模型

本文详细介绍了ANSYS Workbench中Pre-Meshed Cyclic Region功能在处理外部导入复杂网格模型时的应用。通过循环对称分析技术,可显著减少计算资源消耗,特别适用于叶轮机械、齿轮组等周期性结构分析。文章深入解析了该功能的底层逻辑,并提供了从NASTRAN文件导入的离心压缩机叶轮案例,帮助工程师克服网格匹配难题。

weixin_28630185的博客 312

微信小程序音视频通话(for硬件)授权与设备注册实战指南

本文详细介绍了微信小程序音视频通话(for硬件)组件的开发实践,涵盖授权流程、设备注册与VoIP插件集成。重点解析了如何通过服务端获取snTicket实现用户授权,确保硬件设备与微信端的音视频通话安全可靠,适用于智能门禁、话机等物联网场景。

u6v7w8x的博客 945

S3C2440-裸机篇-01 | JZ2440开发板快速上手

2019新年伊始,为了系统的学习嵌入式系统的开发,入手了一块韦东山的JZ2440,入坑之旅开始~

Mculover666的博客(嵌入式) 5399

飞牛NAS一键部署小雅Emby全家桶:解锁海量影音资源与智能刮削

本文详细介绍了如何在飞牛NAS上通过Docker一键部署小雅Emby全家桶,完美解决传统WebDAV挂载无法刮削元数据的问题。该方案整合了小雅Alist海量影音资源与Emby媒体服务器,通过预下载超百GB元数据包,自动实现海报、简介等信息的完美匹配,打造出精美的个人影音库。部署过程需准备阿里云盘令牌与充足存储空间,并详解了从环境配置、镜像拉取到最终验证的完整步骤及优化技巧。

weixin_28312391的博客 918

jz2440s3c2440 jtag口、串口、usb devices 使用

1.串口: 串口类型: 针串口 、usb串口的使用 1. usb 串口 插入电脑 2. 安装串口驱动,安装驱动以后 系统分配com4 窗口 3. windows下载串口连接软件,连接串口,进入linux 2.jtag烧写口: 针口(开发板10针口),需要排线连接板子和eop usb烧写器有哪些: jlink、op、 eop(jz2440标配) eop功能:1. 烧程序 2. usb 转串口功能 1. 排线连接 板子上10针口和 eop ...

dreams_deng的博客 3759

浙政钉(专有钉钉)门户免登(超详细)

钉钉家族 介绍浙政钉门户免登之前,首先搞清楚几个软件的关系,软件分别是:钉钉,专有钉钉,浙政钉 钉钉 是阿里巴巴集团专为中小企业打造的沟通和协同的多端平台。 专有钉钉 原名 政务钉钉,有更开放的设计能力、集成能力、更结构化协同产品、更定制化开发平台。支持专有化部署,数据落本地,更安全、客户可对该产品持牌运营、结构化编排,协助构建本地应用中心、提供移动应用全面安全保障体系。 浙政钉 为规范浙政钉整体架构体系,按照统分结合原则,由省政府办公厅统一设计整体工作界面和系统框架,统筹指导全省统建应用建设,各单

一缕南风的博客 2万+

【iOS开发】dyld: Symbol not found: ___chkstk_darwin 问题解决

【iOS开发】dyld: Symbol not found: ___chkstk_darwin 问题解决 Xcode 13.2.1 运行到iOS12.x版本上崩溃报错如下:dyld: Symbol not found: ___chkstk_darwin dyld: Symbol not found: ___chkstk_darwin Referenced from: /private/var/containers/Bundle/Application/A424CEFD-51DB-450E-9D62-B8

wm9028的专栏 6563

S3C2440—1.熟悉裸机开发板

文章目录一.板载资源介绍二.安装驱动及上位机1.USB的驱动及上位机2.eop驱动安装3.安装烧录软件oflash三.烧写开发板1.预备知识2.烧写裸板3.使用u-boot烧写程序四.恢复出厂设置 一.板载资源介绍 开发板使用了三星的JZ2440,网上有丰富的资源,有助于学习,板载资源如图所示: 需要特别注意以下几点: 一般使用JTAG烧写口来烧写程序,用eop即可 有俩个USB接口,其中U...

肥宅快乐博客 2053

MSBlock赋能C2f模块,让目标检测在轻量化与精度间双向突破

在文件夹下新建,将上述MSBlock和C2f_MS类的代码写入其中。这一步是为了让YOLOv8的代码架构能识别我们的自定义模块。

LXY_LOVE36的博客 143

移植Linux内核自带LCD驱动程序到JZ2440开发板

内核版本:Linux3.14.27 开发板:JZ2440 通常来说移植LCD驱动程序到嵌入式Linux平台并不是一件很难的事情。一般移植LCD到Linux开发平台有两种选择,一种是编写自己的LCD驱动程序并嵌入到Linux内核,另一种是根据自己所使用开发平台的硬件手册直接修改内核里面相关的代码。后一种方法比前一种方法简单一些,下面就以JZ2440 4.3寸LCD开发板为例移植内

babyzhaoshu521的博客 3202

代谢组数据分析(二十一):通过MetaboAnalystR标准化构建sPLSDA预测模型

本文介绍了如何使用R语言中的MetaboAnalystR包和mixOmics包进行代谢组学数据的标准化和sPLSDA分析。MetaboAnalystR包用于数据预处理,包括数据初始化、清洗、补足、过滤和标准化等步骤,以确保数据质量。mixOmics包则用于sPLSDA分析,通过Lasso惩罚进行变量选择,并建立分类模型。文章详细说明了安装和加载相关R包的步骤,并提供了数据导入和预处理的代码示例。最后,强调了数据预处理的重要性,以确保后续分析的准确性和可靠性。

专注生信领域 2426

小论文/大论文必备 | RT-DETR目标检测、数据集增强 | 引入多种数据集增强方法,支持图像和标签同步扩充增强,助力小论文和大论文实验涨点策略,平均提升模型mAP约1-2个百分点

RT-DETR目标检测数据增强策略研究 ,本文针对RT-DETR目标检测模型提出9种数据增强方法,包括几何变换(水平/垂直翻转、中心裁剪)、光照调整(亮度、对比度)和噪声添加(高斯/椒盐噪声)等。所有增强操作均保持图像与标签同步变换,确保训练数据的准确性。实验表明,该策略可提升模型mAP 1-2个百分点,对小目标检测效果尤为显著。文中提供了完整的Python实现代码,支持批量处理图像和标签文件,并详细说明了各增强方法的功能特点。该方法通过提升数据多样性,有效增强了模型在复杂场景下的鲁棒性和泛化能力。

Ai缝合怪、助力小伙伴高效发论文 460

嵌入式LInux学习(一)熟悉JZ2440开发板以及烧写工具

学习视频:韦东山嵌入式LInux开发1期   op/eop   ——  Open JTAG/easy Open JTAG JTAG用于下载程序,但下载速度较慢 如果板子上已经有板上程序,且该程序支持USB转串口下载程序则可用串口下载,速度较快   串口与板子通信测试     启动Ubuntu上的minicom并配置好参数(波特率115200,无流控制)     $sudo mini...

yhl_sophia的博客 1188

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

S3C2440-裸机篇-06 | UART数据发送接收实验(扫描模式)

实验 —— UART实验 1.实验目的 2.实验步骤 3.实验代码 4.实验结果 5.实验总结

Mculover666的博客(嵌入式) 2105

深度学习工具包 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&#39;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(&#39;DeepLearnToolbox&#39;));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(&#39;state&#39;,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&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,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 = &#39;sigm&#39;;%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, &#39;Too big error&#39;);```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(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;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)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;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, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% 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&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 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, &#39;Too big error&#39;);```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(&#39;state&#39;,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, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,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, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,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, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % 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, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % 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, &#39;Too big error&#39;);%% 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(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % 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, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

使用J-Link烧写一U-boot的烧写+裸板程序烧写(JZ2440-S3C2440)

一、使用J-Link 烧写NOR Flash 注意:J-Link 只支持NOR Flash,不支持NAND Flash。 1、安装J-link 驱动(在Windows 下) 在JZ2440 开发板JLINK 使用手册(JZ2440开发板JLINK使用手册\jlink安装驱动程序目录)中,驱动名为:Setup_JLinkARM_V436e.exe。 双击即可进行安装,安装完成后,桌面上显

liyuqian199695的博客 1万+

jre9下载 jdk9

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

linux串口设置1843200波特率,S3C2440-裸机篇-06 | UART数据发送接收实验(扫描模式)...

实验 —— UART数据收发实验1. 看原理图确定UART硬件如何连接由原理图可以看出,JZ2440开发板上将三个串口全部引出,其中UART0设置了板载的USB转串口电路,只需连接板上的USB口就可以,所以接下来我们使用UART0进行数据收发实验。2. 看芯片手册设置引脚复用功能(GPHCON)、开启片内上拉(GPHUP)由原理图可以看出,UART0的引脚是:GPH2:TXD0GPH3:RXD0这...

weixin_36058685的博客 934

嵌入式Linux字符设备驱动开发:从jz2440点亮LED讲透ioremap与GPIO配置

字符设备驱动是Linux内核与硬件交互的基础范式,其核心在于通过主次设备号注册标准化接口,实现用户空间与内核空间的安全隔离和可扩展控制。原理上依赖ioremap完成物理地址到虚拟地址的受控映射,并强制使用writel/readl等IO访问函数保障内存屏障与硬件时序。技术价值体现在访问控制、抽象解耦与长期可维护性——避免mmap直写寄存器导致的乱序执行、权限失控与升级风险。典型应用于ARM9平台如S3C2440开发板的LED控制,需协同处理时钟使能、引脚复用与共阳极电路逻辑。本文以jz2440为实践载体,深入

weixin_30983965的博客 233
上一篇: JZ2440 usb设备驱动
下一篇: JZ2440块设备驱动------用ram模拟块设备
Hello_Linux_001
博客等级 码龄15年 54粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值