itop4412内核编译_编译自定义函数到内核

我的itop4412开发板是半路捡的,所以没办法加他们的售后群,遇到的问题只好一点点记录吧

内核驱动编译

在日常工作过程中,编写内核程序可能机会不多,但是将厂商提供的内核源码编译到固件中,这个技能还是必须掌握的。
itop4412的资料中有两个内核源码文件夹,咱们一个一个来认识下。
在这里插入图片描述

iTop4412_Kernel_3.0
这个应该是官网的源码
itop4412_kernel_4_14_2_bsp
这个是迅为缩减后的源码,里面有他们编写好的脚本咱们先已编译iTop4412_Kernel_3.0 为例
1.拿到源码后先把编译环境搭建下,配置编译环境,然后make编译源码 
export PATH=$PATH:/usr/local/arm/arm-2009q3/bin
source .bashrc2.进入iTop4412_Kernel_3.0 打开Makefile,这里的参数要配置下194 export KBUILD_BUILDHOST := $(SUBARCH)195 ARCH    ?= arm196 CROSS_COMPILE   ?= /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-197 #CROSS_COMPILE   ?= /usr/local/arm/4.5.1/bin/arm-none-linux-gnueabi-198 CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
```![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/805d492d295e4996ab0042131eb280e4.png)配置好后 make -j4 编译下,编译过程会遇到写问题,网上会解决方案这里自己写一个简单字符型驱动,并编译进内核在drivers/char 下创建文件夹 hello
创建三个文件 helloworld.c  Kconfig  Makefile
helloworld.c
#include <linux/init.h>
#include <linux/module.h>MODULE_LICENSE("Dual BSD/GPL");
MODULE_AUTHOR("GYY");static int hello_init(void)
{printk(KERN_EMERG "HELLO WORLD enter!\n");return 0;
}static void hello_exit(void)
{printk(KERN_EMERG "HELLO WORLD exit!\n");}module_init(hello_init);
module_exit(hello_exit);Kconfig 
config HELLOtristate "hello world"help hello hello
Makefile
obj-$(CONFIG_HELLO)+=helloworld.o4.编辑char 文件夹下的Makefile  加上
obj-y       += hello/
5.编辑char 文件夹下的Kconfig 加上source "drivers/char/hello/Kconfig"
6.然后回到源码主目录执行 make menuconfig ,在Character devices就可以看到自己写的驱动了,勾选下 然后编译就可以了在编译itop4412_kernel_4_14_2_bsp 源码时
报garbage following instruction – `dmb ish’解决:编译器问题。更换编译器即可。
sudo apt-get install gcc-arm-linux-gnueabi

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/814418.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每天学习一个Linux命令之w

每天学习一个Linux命令之w 介绍&#xff1a; 在Linux操作系统中&#xff0c;我们经常需要查看当前登录用户信息、系统负载以及其他用户的登录情况。w命令就是一个很常用的命令&#xff0c;它可以提供这些信息。本篇博客将详细介绍w命令及其所有可用的选项&#xff0c;帮助你更…

Redis入门到通关之String命令

文章目录 ⛄1 String 介绍⛄2 命令⛄3 对应 RedisTemplate API❄️❄️ 3.1 添加缓存❄️❄️ 3.2 设置过期时间(单独设置)❄️❄️ 3.3 获取缓存值❄️❄️ 3.4 删除key❄️❄️ 3.5 顺序递增❄️❄️ 3.6 顺序递减 ⛄4 以下是一些常用的API⛄5 应用场景 ⛄1 String 介绍 Stri…

Asterisk 21.2.0编译安装经常遇到的问题和解决办法之卸载pjsip

目录 会安装也要会卸载make uninstallldconfig 会安装也要会卸载 有些人就只会装。 最常见的场景就是需要卸载之前版本的pjproject。 一般来说&#xff0c;其他版本的 pjproject 会被作为静态链接库安装。这些库跟 Asterisk可能不兼容。 因此&#xff0c;在安装正确版本的pjpro…

连锁收银系统哪个好用 国内三大连锁收银系统评比

随着数字化管理趋势下互联网技术的不断发展革新&#xff0c;互联网技术&#xff0c;以及不断升级优化传统行业渠道模式&#xff0c;线上线下结合的电子商务模式正逐渐成为企业发展的趋势。而门店管理系统也在越来越多的企业应用。但市场上连锁店管理系统品牌诸多&#xff0c;很…

生产事故:线程管理不善诱发P0故障

背景 处于业务诉求&#xff0c;需要建立一个统一的调度平台&#xff0c;最终是基于 Dolphinscheduler 的 V1.3.6 版本去做二次开发。在平台调研建立时&#xff0c;这个版本是最新的版本 命运之轮开始转动 事故 表象 上班后业务部门反馈工作流阻塞&#xff0c;登录系统发现大…

设计模式(23):访问者模式

定义 表示一个作用于某对象结构中的各元素的操作&#xff0c;它使我们可以在不改变元素的类的前提下定义作用与这些元素的新操作。 模式动机 对于存储在一个集合中的对象&#xff0c;他们可能具有不同的类型(即使有一个公共的接口)&#xff0c;对于该集合中的对象&#xff0…

Java-博客系统(前后端交互)

目录 前言 博客系统基本情况 1 创建项目&#xff0c;引入依赖 2 数据库设计 2.1 分析 2.2 建库建表 3 封装数据库 3.1 在java目录下创建DBUtil类&#xff0c;通过这个类对数据库进行封装 3.2 在java目录下创建实体类&#xff08;博客类Blog&#xff09; 3.2 在java目录下创建…

docker nginx-lua发送post json 请求

环境准备 dockerfile from fabiocicerchia/nginx-lua:1.25.3-ubuntu22.04 run apt-get -qq update && apt-get -qq install luarocks run luarocks install lua-cjson run luarocks install lua-iconv run luarocks install lua-resty-http后台代理服务准备&#xff…

3D场景编辑方法——CustomNeRF

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 摘要Abstract文献阅读&#xff1a;3D场景编辑方法——CustomNeRF1、研究背景2、提出方法3、CustomNeRF3.1、整体框架步骤3.2、对特定问题的解决 4、实验结果5、总结…

组合模式:构建树形对象结构的设计艺术

在软件开发中&#xff0c;组合模式是一种结构型设计模式&#xff0c;用于表示对象的部分-整体层次结构。通过使单个对象和组合对象具有相同的接口&#xff0c;这种模式允许客户端以统一的方式处理单个对象和组合对象。本文将详细介绍组合模式的定义、实现、应用场景以及优缺点。…

自动化运维(二十六)Ansible 实战变量插件和连接插件

Ansible 支持多种类型的插件&#xff0c;这些插件可以帮助你扩展和定制 Ansible 的功能。每种插件类型都有其特定的用途和应用场景。今天我们一起学习变量插件和连接插件。 一、变量插件 Ansible 变量插件允许动态地添加变量到主机或组中&#xff0c;这些变量可以在 playbook…

.net Web Api Post请求传递数据

.net c#调用Web Api Post请求传输数据&#xff0c;用.net8一直传不了自定义的json格式数据&#xff0c;后面找到用实体传递Api那边用一样字段的实体接收才能正常传输数据。记录一下 var mails new {Name "tt",Hobby "test" }; string json JsonConv…

2024HW--->入侵排查

在蓝队的面试中&#xff0c;我们有可能会被问到对可能被入侵的机器&#xff0c;怎么样去排查&#xff0c;下面就来总结一下 1.Windows入侵排查 1.检查系统账号的安全 检测系统账号&#xff0c;其实最重要的就是一个点 "查看服务器是否存在可疑账号、新增账号。" 最…

数据结构课程设计选做(一)---数字排序(哈希、排序)

2.1.1 题目内容 2.1.1-A [问题描述] 给定n个整数&#xff0c;请统计出每个整数出现的次数&#xff0c;按出现次数从多到少的顺序输出。 2.1.1-B [基本要求] &#xff08;1&#xff09;输入格式&#xff1a; 输入的第一行包含一个整数n&#xff0c;表示给定数字的个数。 第二…

蓝桥杯备赛:考前注意事项

考前注意事项 1、DevCpp添加c11支持 点击 工具 - 编译选项 中添加&#xff1a; -stdc112、万能头文件 #include <bits/stdc.h>万能头文件的缺陷&#xff1a;y1 变量 在<cmath>中用过了y1变量。 #include <bits/stdc.h> using namespace std;// 错误示例 …

院子里种点什么树风水好呢?

植物本身是一个丰富的生活领域&#xff0c;有着强烈的视觉暗示。其实&#xff0c;在家中养植物&#xff0c;是有许多好处的&#xff0c;它不仅能够装点庭院的环境让家更美丽&#xff0c;还能调节室内的空气质量&#xff0c;对家人的运势也有着非常大的帮助。 不过&#xff0c;并…

你的高佣副业不二之选,开始流量卡推广,一文看懂号卡推广

在这个信息化的时代&#xff0c;网络已成为人们生活中不可或缺的一部分。然而&#xff0c;在享受着便捷与高效的同时&#xff0c;我们也必须面对一个现实问题&#xff0c;也就是高昂的流量费用。为了解决这一困扰广大用户的痛点&#xff0c;我们今天带来了一个极具吸引力的机会…

005Node.js模块URL的使用

引入 URL 模块 要使用 URL 模块&#xff0c;首先需要在代码中引入它。可以使用以下代码将 URL 模块导入到你的脚本中&#xff1a; const url require(url);实例代码 const urlrequire(url); var apihttp://www.baidu.com?nameshixiaobin&age20; console.log(url.parse(…

【测试开发学习历程】python深拷贝和浅拷贝

目录 1、变量、对象和引用 2、对象的垃圾收集 3、共享引用&#xff08;共享对象&#xff09; 4、共享引用和相等 5、共享引用和在原位置修改 6、使用Python复制而不是创建引用可以避免原位置修改问题 7、浅拷贝和深拷贝 浅拷贝 深拷贝 1、变量、对象和引用 类型属于对…

已解决java.nio.file.InvalidPathException: 无效路径异常的正确解决方法,亲测有效!!!

已解决java.nio.file.InvalidPathException: 无效路径异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 问题分析 报错原因 解决思路 解决方法 检查路径格式 适配操作系统 验证文件名和长度 检查字符编码 测试资源存在性 总结 博主…