2. 字节对齐及基础数据类型定义 协议栈源码(码云/github)port/include/port/datatype.h中根据目标系统架构(16位 or 32位)及所使用的编译器定义基础数据类型及字节对齐方法.这个文件中最重要的移植工作就是依据目标编译器手册定义字节对齐方法.因为网络协议栈最关键的地方就是底层通讯报文结构必须字节对齐,而不是通常情形下的缺省四字节对齐. #define PACKED __attribute__((packed)) //* 缺省提供了gcc编译器的字节对齐方法 #…
4. 添加网卡 移植的最后一步就是编写网卡驱动然后将网卡添加到协议栈.网卡驱动其本质上完成的是数据链路层的工作,在整个通讯链路上处于通讯枢纽位置,通讯报文的发送和接收均由其实际完成.针对网卡部分的移植工作共三步: 1)编写网卡驱动: 2)注册网卡到协议栈: 3)对接网卡数据收发接口: 协议栈目前支持两种网卡类型:ethernet和ppp.两种网卡的移植工作虽然步骤一样,但具体移植细节还是有很大区别的,需要分开单独进行. 4.1 ethernet网卡 从移植的角度看,ethernet网卡驱动要提供…
onps栈的移植涉及几个部分:1)系统配置及裁剪:2)基础数据类型定义:3)RTOS适配层实现:4)编写网卡驱动并注册网卡.本文作为onps栈移植的指导性文件将给出一般性的移植说明及建议,具体的移植样例工程及说明请移步码云下载: <onps网络协议栈移植及使用说明v1.0> 目标os为rt-thread的移植样例工程(STM32F407VET6及STM32F103RCT6两个平台) 目标os为ucos-ii的移植样例工程(硬件平台同上) 关于onps栈的前世今生请移步上一篇博文<开源网络…
基于Linux的kfifo移植到STM32(支持os的互斥访问) 关于kfifo kfifo是内核里面的一个First In First Out数据结构,它采用环形循环队列的数据结构来实现:它提供一个无边界的字节流服务,最重要的一点是,它使用并行无锁编程技术,即当它用于只有一个入队线程和一个出队线程的场情时,两个线程可以并发操作,而不需要任何加锁行为,就可以保证kfifo的线程安全. 具体什么是环形缓冲区,请看我以前的文章 说明 关于kfifo的相关概念我不会介绍,有兴趣可以看他的相关文档,我只…
1. 底层API 由协议栈底层提供的api,用于涉及底层操作的一些功能实现,这些api接口函数的原型定义分布于不同的文件,它们被统一include进了onps.h中: open_npstack_load:将协议栈载入目标系统,协议栈开始运行 open_npstack_unload:将协议栈载出目标系统,协议栈结束运行 route_add:添加一条静态路由 route_del:删除一条静态路由 route_del_ext:删除指定网卡在路由表中的所有路由条目,禁止网卡跨网段通讯 route_get…
也许是先入为主的原因,时钟用不惯Keil环境,大多数的教程都是拿keil写的,尝试将官方的uc/os iii 移植到IAR环境. 1.首先尝试从官网上下载的官方移植的代码,编译通过,但是执行会报堆栈溢出警告(为何keil没有报堆栈溢出??),网上有人说不用理会,但是实际使用时发生了错误(定义的常量数组值被改变,怀疑是堆栈溢出导致),发现使用的IAR版本不能完美支持使用的STM32芯片,换用高版本测试..(高版本正确,与低版本对芯片的支持有关) 2.开始时虽然会堆栈溢出,但是能够进入异常中断,进入…
深入浅出嵌入式linux系统移植开发 (环境搭建.uboot的移植.嵌入式内核的配置与编译) 亲爱的网友,我这里有套课程想和大家分享,假设对这个课程有兴趣的,能够加我的QQ2059055336和我联系. 课程内容简单介绍 本课程重点是给大家解说嵌入式linux系统移植的开发方法,採用理论与实践,硬件与软件相结合的方法. 1.在每节開始之前先简单回想上一节所讲的主要内容,并对本节所讲的内容先进行概述,解说概念.技术要点,设计实现思路等内容,最后总结本次课程的要掌握的要点. 2.在讲课的过程中对关键…
1. ping测试 协议栈提供ping工具,其头文件为"net_tools/ping.h",将其include进你的目标系统中即可使用这个工具. -- #include "onps.h" #include "net_tools/ping.h" //* 回调函数,收到目标地址的应答报文后ping工具会调用这个函数完成用户的特定处理逻辑 //* 针对这个测试,在这里就是简单地打印出了应答报文的内容以及ping的响应时间 static void pin…
关于移植uC/OS-III 网上已经有很多教程了此处只是做个记录 首先下载源码然后解压得到下面的文件: 然后在模版工程里新建各种文件夹: 最后全部都添加进工程: OK了,编译一下,惊呆了,竟然 0错误 0 警告 然后修改下文件 startup_stm32f40xx.s DCD DebugMon_Handler ; Debug Monitor Handler DCD 0 ; Reserved ;DCD PendSV_Handler ; PendSV Handler ;DCD SysTick_Han…
一.背景 当前自己开发的 Android 项目是一个智能推荐系统,用到 drools 规则引擎,于我来说是一个新知识点,以前都没听说过的东东,不过用起来也不算太难,经过一段时间学习,基本掌握.关于 drools 规则引擎的内容,后面再整理JBoss 官网上面有详细的文档,网上资料也比较多.学习 drools 规则引擎的传送门: Drools 官网首页: https://www.drools.org/ Drools 官方文档: https://docs.jboss.org/drools/relea…