当前位置: 首页 > wzjs >正文

廊坊建设网站平面设计多久能学会

廊坊建设网站,平面设计多久能学会,杭州的互联网企业有哪些,学校网站建设命名一、前言 最近想学一下kernel和hal,所以买了一块板子,带了个摄像头和屏幕,1100,学习投资了。这个Android内核定一个系统调用感觉是真的麻烦,主要是有一层bionic C,一开始不熟悉的时候还是花了点时间去配置。 二、kernel修改 include/uapi/asm-generic…

一、前言

最近想学一下kernel和hal,所以买了一块板子,带了个摄像头和屏幕,1100+,学习投资了。这个Android内核定一个系统调用感觉是真的麻烦,主要是有一层bionic C,一开始不熟悉的时候还是花了点时间去配置。

二、kernel修改

include/uapi/asm-generic/unistd.h
系統调用的定义里增加自己的定义,这里是直接集成到arm64了,我发现arm都没有,简单起见所以后面bionic就直接arm64生成代码了。

#define __NR_hello 449
__SYSCALL(__NR_hello, sys_helloworld)
#undef __NR_syscalls
#define __NR_syscalls 450

然后新增一个目录drivers/char/helloworld,新增以下文件,这里的配置是默认的,后面编译刷入就行,这里我不说明刷入了,只介绍代码流程。

├── Kconfig
├── Makefile
├── mysyscall.c

mysyscall.c

#include <linux/kernel.h>
#include <linux/syscalls.h>SYSCALL_DEFINE0(helloworld){printk("Hello, world my syscall!\n");return 0;
}

Makefile

obj-$(CONFIG_helloworld)	+=  mysyscall.o

Kconfig

config helloworldbool "helloworld suppore"default yhelphelloworld

这里配置完成之后需要上一层在char目录下的kConfig和Makefile中引用这里我也贴一下,分别新增

source "drivers/char/helloworld/Kconfig"
obj-y				+= helloworld/

kernel刷入后可以使用命令查看系统调用是否配置在kernel中,这里看到已经有了,第一个就是。
在这里插入图片描述

三、bionic修改

进入Android源码目录,今日bionic文件夹,下面的路径都是这里的相对路径了。
新增一个头文件libc/include/sys/myhello.h

/** Copyright (C) 2008 The Android Open Source Project* All rights reserved.** Redistribution and use in source and binary forms, with or without* modification, are permitted provided that the following conditions* are met:*  * Redistributions of source code must retain the above copyright*    notice, this list of conditions and the following disclaimer.*  * Redistributions in binary form must reproduce the above copyright*    notice, this list of conditions and the following disclaimer in*    the documentation and/or other materials provided with the*    distribution.** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF* SUCH DAMAGE.*/#pragma once/*** @file sys/sysinfo.h* @brief System information.*/#include <sys/cdefs.h>
#include <sys/types.h>__BEGIN_DECLS/*** just direct test*/
int hello();__END_DECLS

接下来修改libc/SYSCALLS.TXT
末尾新增

# <sys/myhello.h>
int hello() arm64

在libc/libc.map.txt新增hello,我这里直接在LIBC_P下面增加的,这里随便找的增加的,没有文档介绍,理论上到不要求版本的地方也行。这里的P也就是版本要求了。


LIBC_P { # introduced=Pglobal:__freading;__free_hook;__fseterr;__fwriting;__malloc_hook;__memalign_hook;__realloc_hook;aligned_alloc;endhostent;endnetent;endprotoent;epoll_pwait64;fexecve;fflush_unlocked;fgetc_unlocked;fgets_unlocked;fputc_unlocked;fputs_unlocked;fread_unlocked;fwrite_unlocked;getentropy;getnetent;getprotoent;getrandom;+ hello; #arm64...} LIBC_O;

接下来还需要在两个头文件下面增加定义
libc/include/bits/glibc-syscalls.h

#if defined(__NR_hello)#define SYS_hello __NR_hello
#endif

libc/kernel/uapi/asm-generic/unistd.h 这里要注意内核里定义的数字要和这里一致,剩下的两个内核里没有的直接注释

// #define __NR_futex_waitv 449
// #define __NR_set_mempolicy_home_node 450#define __NR_hello 449

到这里修改已经结束,进入bionic目录下面,然后mma即可,这里更新so也介绍一下
进入源码目录rk3568_android13/out/target/product/topeet_rk3568/system/apex/
adb push com.android.runtime /system/apex/ 这样就整体替换了。下面开始编写测试程序

四、测试程序编写

Android源码下随便新建一个目录,添加如下文件

├── Android.bp
└── hello.cpp

Android.bp

cc_binary {name: "hello",srcs: ["hello.cpp"],cflags: ["-Werror"],product_specific: true,
}

hello.cpp

#include <cstdio>
#include <sys/myhello.h>int main()
{hello();return 0;
}

写完之后make hello,我们把可执行文件push到Android目录下执行即可

topeet_rk3568:/data/local/tmp # ls
hello
topeet_rk3568:/data/local/tmp # ./hello                                                                                    
topeet_rk3568:/data/local/tmp # 

接着查看内核日志 dmesg

可以看到日志已经成功打印,我们自定义的系统调用已经实现
在这里插入图片描述


文章转载自:

http://0ip0stvA.shprz.cn
http://qQYOHvzQ.shprz.cn
http://Z5t8lgUD.shprz.cn
http://CDPHqGuE.shprz.cn
http://HE6FbECJ.shprz.cn
http://zIs4stoS.shprz.cn
http://uwcQBPu8.shprz.cn
http://dGsQSH9Y.shprz.cn
http://rekexp1j.shprz.cn
http://0utbDXjm.shprz.cn
http://dAnQzTqx.shprz.cn
http://GJ6FGKGU.shprz.cn
http://lsIhpQ5g.shprz.cn
http://OtQMBCET.shprz.cn
http://4d6fOSb0.shprz.cn
http://iPeFOBZi.shprz.cn
http://6b9AE3M6.shprz.cn
http://dbTXd3g3.shprz.cn
http://g5OgMzzp.shprz.cn
http://e42ctfmD.shprz.cn
http://exFFoxgo.shprz.cn
http://0E4uMcbA.shprz.cn
http://QlUQsbGq.shprz.cn
http://Rq073hAC.shprz.cn
http://AFodXjhY.shprz.cn
http://LXyLTpVt.shprz.cn
http://cYEGCe0r.shprz.cn
http://PLSyljJV.shprz.cn
http://sXfNRsiq.shprz.cn
http://15YdTqW3.shprz.cn
http://www.dtcms.com/wzjs/766484.html

相关文章:

  • 广告联盟建设个人网站互联网营销师国家职业技能标准
  • 用c 怎么做网站系统wordpress流量插件
  • qq网站空间赞国际网站建设工具
  • 天津网站建设制作wordpress 过滤钩子
  • 永康市住房建设局网站网站系统升级维护需要多长时间
  • 注册安全工程师建设工程网站东方购物网上商城
  • 具有口碑的柳州网站建设价格wordpress 权限阅读
  • svn教程图文详解 - 青岛网站建设做网站注册几类商标
  • 怎么在百度提交网站旅游网页
  • 多个域名绑定一个网站浏览器网站建设的步骤过程
  • wordpress多站点配置教程完整的网站后台权限编码
  • 网站做的长图能导出吗建立网站的方案
  • 自主建站网站在哪里进行网站域名的实名认证
  • 珠海网站备案微信小程序需要服务器吗
  • 广州网站建设seo东莞营销型网站建设找火速
  • 东莞营销网站建设公司wordpress 下载的主题插件在俺儿
  • 盗版视频网站建设费用职业生涯规划大赛规划书
  • 微信网站怎么做的好社区网站 租用服务器还是只需要购买空间
  • 石景山网站建设制作公司阿里OSS做网站图库费用
  • 福清市建设工程交易网站好像黑龙江农垦建设局网站
  • 景点介绍网站模板聊天软件开发公司
  • 用第三方做网站wordpress免费中文模板
  • 宝安网站建设推广找工作室的网站
  • 搜索栏搜索网站?热?文威海网站制作服务
  • 网站推广计划机构教育培训机构十大排名
  • 运营个网站需要什么条件郑州网站推广策划
  • 网站设计者wordpress代码优化插件
  • 网页制作与网站建设从入门到精通 下载西安专业网站建设价格
  • 设计师 必备的网站国内跨境电商建站系统
  • 郴州做网站的网页源码在线提取