11 andylauren

尚未进行身份认证

我要认证

嵌入式爱好者

等级
TA的排名 4k+

Python安装时make install和make altinstall的区别

make altinstall与make install的区别,altinstallskips creating thepythonlink and the manual pages links。altinstall跳过创建python链接和手册页链接的操作。如果使用make install,在系统中将会有两个不同版本的Python在/usr/bin/目录中,这将会导致很多问题。...

2020-09-02 15:25:37

USB Type-C引脚排布指南:哪些引脚控制电源传输,数据传输等

您了解USB Type-C连接器吗?本篇文章主要介绍了USB Type-C引脚的排布,并简要介绍了其各种模式。USB Type-C是USB连接器系统的规范,在智能手机和移动设备上越来越受欢迎,并且能够进行电力传输和数据传输。与USB的早些产品不同,它也是可翻转的 - 所以你不需要尝试多次插入。 USB Type-C端口本篇...

2020-07-30 15:05:54

USB Type-C Configuration Channel (CC)引脚功能介绍

翻译自: http://kevinzhengwork.blogspot.com/2014/09/usb-type-c-configuration-channel-cc-pin.html1.插入检测DFP(下行端口)为主机端口,UFP(上行端口)为设备端口。如图所示,在DFP中的CC通道上有上拉电阻,相应的在UFP中有对应的下拉电阻。在DFP与UFP连接之前,VBUS没有输出,当两者连接之后,DFP检测到CC引脚的电平被拉低,DFP则识别到UFP设备已连接并打开VBUS上的MOSFET,为UFP设备供

2020-07-30 11:29:31

Glib学习(28) gdbus最简单的例子

官方文档:https://developer.gnome.org/gio/stable/DBus的通信机制是Server-Client模式,Server需要提供一个XML(eg: cn.RTplay.Gdbus.Example.xml)文档给Client端去说明DBus Server提供的interface name、signal name及它的arg name、 type、 direction、method name及它的arg name、 type、 direction。本例程代码:https:

2020-05-21 15:38:57

Glib学习(27) dbus编译

最近想学习gdbus,gdbus是对dbus的一种封装,能够更好的使用dbus。DBUS是一种高级的进程间通信机制。DBUS支持进程间一对一和多对多的对等通信,在多对多的通讯时,需要后台进程的角色去分转消息,当一个进程发消息给另外一个进程时,先发消息到后台进程,再通过后台进程将信息转发到目的进程。DBUS后台进程充当着一个路由器的角色。DBUS中主要概念为总线,连接到总线的进程可通过总线接收或传递消息,总线收到消息时,根据不同的消息类型进行不同的处理。https://blog.csdn.net/yishu

2020-05-19 13:55:03

Glib学习(26) meson编译glib

从2.59.1版本开始去掉了autoconfig编译工具,改为使用meson构建工程。meson是用Python语言开发的构建工具。Meson 旨在开发最具可用性和快速的构建系统。提供简单但强大的声明式语言用来描述构建。原生支持最新的工具和框架,如 Qt5 、代码覆盖率、单元测试和预编译头文件等。利用一组优化技术来快速变异代码,包括增量编译和完全编译。我体会到使用meson的一个优点是当工程依赖一些库没有时,meson可以到git上自动下载并帮你安装,相比config要好。下面我们来开始进行glib的

2020-05-18 16:08:56

四、android studio使用自己库编译工程

这一篇要把我们之前做的库和接口通过jni在android studio中给java调用。接口主要实现了字符串“123456”的MD5输出。1.创建工程将openssl和mylib-sample的库都放到生成的文件夹中arm64-v8a armeabi-v7a x86 x86_64每个文件夹都应该有如下文件libahPlayer.so、libcrypto.so、libssl.so...

2020-04-03 15:38:31

三、android编译cmake工程

现在我们需要编译我们自己的程序,我们自己的程序中使用了openssl的函数,这样就形成了一个库引用库的过程,这个通了就基本都通了。1.cmake版本问题如果你使用的cmake版本在3.6.0以上就没有这个问题,如果你使用的低于这个版本当你想要编译的cmake工程时会报错CMake Error at /home/renz/android/AndroidWorkSpace/NDK_Too...

2020-04-01 16:30:51

二、NDK交叉编译openssl

1、创建开源模块根目录mkdir AndroidWorkSpace/OpenSourceModule2、openssl源码获取openssl:https://www.openssl.org/source/我做这个的时候最新的是1.1.1eopenssl-1.1.1e.tar.gz进入开源模块目录:cd OpenSourceModule解压到当前目录:tar vzxf o...

2020-04-01 16:04:13

一、搭建Android-NDK开发环境

目标:在android app中调用自己的c代码,这个c代码会以动态库的形式存在,并且为了表示更广泛的使用场景,我们的c程序会使用第三方库(openssl),这也是我们开发中经常用的方式。功能:c代码就是将openssl中的MD5直接封装,并以字符串形式输出MD5值。android代码调用jni接口,并将MD5值输出到手机屏幕。对象:新手入门,可以通过本教程一步一步完成整个过程,但是可能会...

2020-04-01 15:17:36

【转载】git如何部署公钥

原作者:隔壁老樊啊来源:简书公司换电脑之后,每次提交代码到码云,都要输入git账号和密码,那怎么解决每次都要输入的问题呢。我们可以部署一个公钥。码云提供了基于SSH协议的Git服务,在使用SSH协议访问仓库仓库之前,需要先配置好账户/仓库的SSH公钥。我们在用码云创建完项目之后,如果拉取项目是用HTTPS这种,都是需要密码的。如果是SSH,就不需要密码。配置公钥的目的,就是使用SSH公...

2020-03-21 14:25:15

php与linux程序的消息队列通信

概述最近正在设计一些关于PHP与linux程序进行通信的工作,首先php和linux程序一般是不会运行在一个进程里,这样如果需要通信只能是跨进程实现。这里可以使用两种方法,一种是用c语言分别实现通信接口,然后将其中一种编译成php扩展,让php调用,这类自由度比较高,但是有一定难度。还有一种就是直接使用php支持的ipc接口,与其他进程通信。今天我们来研究一下php使用现有的IPC与其...

2020-02-27 14:07:24

php扩展php-nano的安装与测试

官网https://nanomsg.org/源码下载https://github.com/mkoppanen/php-nano提前准备你需要已经安装了nanomsg的库,php,和pkg-config,可能还有其他需要的东西,但是我没有遇到,遇到的问题可以留言讨论。nanomsg库的安装方法可以查看另一篇文章https://blog.csdn.net/andylaure...

2020-02-26 14:53:07

(12)从1开始写一个操作系统

第十二章Shell移植命令行外壳(shell),提供一套供用户在命令行的操作接口,主要用于调试、查看系统信息。在大部分嵌入式系统中,一般开发调试都使用硬件调试器和printf日志打印,在有些情况下,这两种方式并不是那么好用。比如对于多任务系统,我们想知道某个时刻系统中的任务运行状态、手动控制系统状态。如果有一个shell,就可以输入命令,直接相应的函数执行获得需要的信息,或者控制程序的行为...

2019-09-23 19:24:23

(11)从1开始写一个操作系统

第十一章小内存管理因为小内存的限制,不可能使用系统标准的malloc和free,这里介绍3种小内存管理方法。第一种就是预先申请一块大内存。然后使用这个内存来动态分配,并在分配时使用一个头来做分配记录。在使用过程中会出现碎片,也就是会发生不连续的可用内存。当有连续释放的内存是会进行合并。这种方法时最简单的方法也是小内存中最容易实现的,但是有一个致命的缺点就...

2019-09-23 18:59:06

(10)从1开始写一个操作系统

第十章任务间同步和通信Inter-Task Communication,任务间通信多任务就会涉及到任务间共享资源的互斥操作和任务间通信。我们所需要完成的是能够提供这些功能的函数,来让用户更好的实现任务间同步和通信。我们将会实现互斥锁、信号量、消息队列以及事件标志。优先级翻转谈到任务间同步的机制就会涉及到优先级翻转的问题。首先说一下什么是优先级翻转。简单从字面上...

2019-09-23 18:45:58

(9)从1开始写一个操作系统

第九章任务函数的补充前面讲的代码基本已经把我们的内核全部都实现完了,有一些需要有的函数没有在前面讲到,在这一章我们统一补充一下,让我们的内核更加完善。让出CPU当存在同级优先级任务的时候,任务希望把CPU让给其它同级优先级,担忧不想自己进入非就绪态的时候需要提供一个函数,来实现既能让出CPU,CPU又不改变自己的就绪状态。其实实现起来非常简单,就是任务调度函数,但是我们的void ...

2019-09-23 18:42:09

(8)从1开始写一个操作系统

第八章抢占式概念抢占式内核:即当任务正在运行,有一个更高优先级的任务出现时,如果当前内核允许抢占,则可以将当前任务挂起,执行优先级更高的任务。在我们上一章的基础上我们已经做了这个工作。说白了就是在任务创建的时候进行了任务调度,已保证更高优先级的任务能够被及时运行。还有就是在更高优先级从非就绪态到就绪态的时候应该进行任务调度。这个场景是什么呢?比如高优先级的任务进入了sleep态,当sl...

2019-09-22 17:25:07

(7)从1开始写一个操作系统

第七章时间片概念时间片轮转调度是一种最古老,最简单,最公平且使用最广的算法。每个任务被分配一个时间段,称作它的时间片,即该任务允许运行的时间。如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个任务。如果任务在时间片结束前阻塞或结束,则CPU当即进行切换。调度程序所要做的就是维护一张任务先后运行的列表,当任务用完它的时间片后,它被插入到列表的前边,后面的任务顺序移动到队列的末尾。...

2019-09-22 17:14:47

(6)从1开始写一个操作系统

第六章任务优先级及任务状态到现在为止我们其实已经实现了一些多任务的功能,而且我们也能从中总结出一些状态,比如正在运行,睡眠,挂起,就绪。这些状态都有他们特殊的逻辑,在之后我们还会设计支持时间片的方式,这时候我们只有就绪表就有些不够用了,我们需要在任务控制块中添加任务状态属性。在前面讲到的任务切换逻辑时间上是进行了任务ID从大到小的先后顺序进行调度,这就有点像优先级,只不过优先级与任务I...

2019-09-22 16:04:28

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。
  • 分享宗师
    分享宗师
    成功上传21个资源即可获取