如何通过算法较好地完成一件事?

如何较好地完成一件事?不准备: 行言谦虚谨慎,举止大方得体。(最高境界)可准备: 提前评估,预判风险,胸中有数,自信践行。总结:无论大事小事,第一步必须提前预估风险,这也是一种习惯。Mode算法处理对象:预估未发生事情风险的准确率期待效果:将准确率无限提升(全家的事件体验很好)特征集合:时间、地点、涉及人物以及各方合理性Demo处理对象:本周日带小孩去拍百日照 -- 小事期待效果:可以考虑周全,开开心心地完成这件事收集事件相关特征集合:天气:W时间:.
分类: 其他 发布时间: 10-09 11:42 阅读次数: 0

linux驱动框架结构体总结1

Linux字符设备驱动是Linux驱动开发的基础,而 Linux字符设备驱动得开发要遵循一定得模式和规则。对于 Linux 这样一个成熟、庞大、复杂的操作系统,代码的重用性非常重要,所以一般都会采用驱动分隔的方式来简化驱动的开发。其中每个不同的框架关键是实现几个关键的结构体。一 字符设备基础 struct file_operations { struct module *owner; loff_t (*llseek) (struct file *, loff_t, int); ssize
分类: 其他 发布时间: 10-09 11:42 阅读次数: 0

STM32跑MicroPython的链接脚本分析

一链接脚本的简单常识有时候我们很多文件需要链接到指定的区域,或者叫做段里面,比如在 Linux 里面初始化函数就会放到 init 段里面。因此我们需要能够自定义一些段,这些段的起始地址我们可以自由指定,同样的我们也可以指定一个文件或者函数应该存放到哪个段里面去。要完成这个功能我们就需要使用到链接脚本,链接脚本用于描述文件应该如何被链接在一起形成最终的可执行文件。其主要目的是描述输入文件中的段如何被映射到输出文件中,并且控制输出文件中的内存排布。比如我们编译生成的文件一般都包含 text 段、 data 段
分类: 其他 发布时间: 10-09 11:42 阅读次数: 0

Makeflie基础

一、 Makefile书写规则
分类: 其他 发布时间: 10-09 11:42 阅读次数: 0

U-Boot 顶层 Makefile 分析一

顶层 Makefile 也就是 uboot 根目录下的 Makefile 文件。
分类: 其他 发布时间: 10-09 11:41 阅读次数: 0

U-Boot 顶层 Makefile 分析二

6、代码检查uboot 支持代码检查,使用命令“make C=1”使能代码检查,检查那些需要重新编译的文件。“make C=2”用于检查所有的源码文件# Call a source code checker (by default, "sparse") as part of the# C compilation.## Use 'make C=1' to enable checking of only re-compiled files.# Use 'make C=2' to enable che
分类: 其他 发布时间: 10-09 11:41 阅读次数: 0

Uboot启动内核和根文件系统命令分析

uboot有两种启动 Linux 内核和rootfs的方法,一种是直接从flash(nand或emmc)启动,一种是从网络启动。这里面用到了两个非常重要的环境变量bootcmd 和 bootargs。一、bootcmd 和 bootargs 环境变量bootcmd 保存着 uboot 默认命令, uboot 倒计时结束以后就会执行 bootcmd 中的命令。这些命令一般都是用来启动 Linux 内核的,比如读取 EMMC 或者 NAND Flash 中的 Linux 内核镜像文件和设备树文件到 DRAM
分类: 其他 发布时间: 10-09 11:41 阅读次数: 0

menuconfig 图形化配置

  uboot 或 Linux 内核可以通过输入“make menuconfig”来打开图形化配置界面, menuconfig是一套图形化的配置工具,需要 ncurses 库支持。 ncurses 库提供了一系列的 API 函数供调用者生成基于文本的图形界面  menuconfig 重点会用到两个文件: .config 和 Kconfig, .config 文件保存着 uboot或 Linux 内核 的配置项,使用 menuconfig 配置完 uboot或 Linux 内核 以后肯定要更新.config
分类: 其他 发布时间: 10-09 11:40 阅读次数: 0

常用 Shell 命令

1、目录信息查看命令 ls  Shell 下文件浏览命令为 ls,格式如下:ls [选项] [路径]  ls 命令主要用于显示指定目录下的内容,列出指定目录下包含的所有的文件以及子目录,它的主要参数有:  -a 显示所有的文件以及子目录,包括以“.”开头的隐藏文件。  -l 显示文件的详细信息,比如文件的形态、权限、所有者、大小等信息。  -t 将文件按照创建时间排序列出。  -A 和-a 一样,但是不列出“.” (当前目录)和“…” (父目录)。  -R 递归列出所有文件,包括子目录中的
分类: 其他 发布时间: 10-09 11:40 阅读次数: 0

APT 下载工具

  APT 下载工具可以实现软件自动下载、配置、安装二进制或者源码的功能。 APT 下载工具install命令结合在一起构成了 Ubuntu 下最常用的下载和安装软件方法。它解决了 Linux 平台下安装软件的一个缺陷,即软件之间相互依赖。APT 采用的 C/S 模式,也就是客户端/服务器模式。APT 工具常用的命令如下:1、更新本地数据库  如果想查看本地哪些软件可以更新的话可以使用如下命令:sudo apt-get update  这个命令会访问源地址,并且获取软件列表并保存在本地。2、检查
分类: 其他 发布时间: 10-09 11:40 阅读次数: 0

VI/VIM 编辑器

  Ubuntu自带了 VI 编辑器, VIM 编辑器是 VI 编辑器升级版本, VI/VIM 编辑器都是一种基于指令式的编辑器,不需要鼠标,也没有菜单,仅仅使用键盘来完成所有的编辑工作。安装 VIM 编辑器命令如下:sudo apt-get install vim  VIM 编辑器有 3 种工作模式:输入模式、指令模式和底行模式,通过切换不同的模式可以完成不同的功能。  VIM默认是以只读模式打开的文档,因此我们要切换到输入模式,切换到输入模式的命令如下:  i 在当前光标所在字符的前面,转为输
分类: 其他 发布时间: 10-09 11:40 阅读次数: 0

设备树简介

  描述设备树的文件叫做 DTS(DeviceTree Source),这个 DTS 文件采用树形结构描述板级设备,也就是电路板上的设备信息。比如CPU 数量、 内存基地址、 IIC 接口上接了哪些设备、 SPI 接口上接了哪些设备等等。  设备树(Flattened Device Tree),将描述板级硬件信息的内容从 Linux 内中分离开来,用一个专属的文件格式来描述,这个专属的文件就叫做设备树,文件扩展名为.dts。 一个 SOC 可以作出很多不同的板子,这些不同的板子共同的信息可以提取出来作为一
分类: 其他 发布时间: 10-09 11:39 阅读次数: 0

linux内核的设备匹配方法

一、设备匹配方法1.1、未使用设备树的设备匹配方法在没有使用设备树以前, uboot 会向 Linux 内核传递一个叫做 machine id 的值, machine id也就是设备 ID,告诉 Linux 内核自己是个什么设备,看看 Linux 内核是否支持。 Linux 内核是支持很多设备的,针对每一个设备(板子), Linux内核都用MACHINE_START和MACHINE_END来定义一个 machine_desc 结构体来描述这个设备,比如在文件 arch/arm/mach-imx/mach
分类: 其他 发布时间: 10-09 11:39 阅读次数: 0

设备树节点追加内容

  设备树是描述PCB硬件信息的文件,如果PCB增加一个六轴芯片fxls8471, fxls8471 要接到PCB的 I2C1 接口上,那么相当于需要在 i2c1 这个节点上添加一个 fxls8471 子节点。对于I2C1 接口对应的节点,在文件 imx6ull.dtsi 文件,有如下所示内容:i2c1: [email protected] { #address-cells = <1>; #size-cells = <0>; compatible = "fsl,imx6ul-i2c"
分类: 其他 发布时间: 10-09 11:39 阅读次数: 0

设备树在linux系统中的体现

  Linux 内核启动的时候会解析设备树中各个节点的信息,并且在根文件系统的**/proc/devicetree** 目录下根据节点名字创建不同文件夹,如图 所示:   /proc/device-tree 目录下是根节点“/”的所有属性和子节点。1、根节点“/”各个属性  在图中,根节点属性表现为一个个的文件,如图 “#address-cells”、“#size-cells”、“compatible”、“model”和“name”这 5 个文件,它们在设备树中就是根节点的 5个属性。可以输入cat
分类: 其他 发布时间: 10-09 11:38 阅读次数: 0

编译树莓派Linux内核

  Raspberry Pi 内核Linux代码存储在 GitHub 中,可以在github.com/raspberrypi/linux上查看。一、下载linux内核源码git clone --depth=1 https://github.com/raspberrypi/linux  上面的命令将下载当前的活动分支。省略–depth=1将下载整个存储库,包括所有分支的完整历史记录,但占用更多的存储空间。要下载不同的分支,可以使用以下–branch选项:git clone --depth=1 --b
分类: 其他 发布时间: 10-09 11:38 阅读次数: 0

Linux内核工程目录分析

1、arch 目录这个目录是和架构有关的目录,比如 arm、arm64、avr32、x86 等等架构。每种架构都对应一个目录,在这些目录中又有很多子目录,比如 boot、common、configs 等等。以 arch/arm 为例其子目录用于控制系统引导、系统调用、动态调频、主频设置等。arch/arm/configs 目录是不同平台的默认配置文件:xxx_defconfig。arch/arm/boot/dts 目录里面是对应开发平台的设备树文件。arch/arm/boot 目录下会保存编译出来的
分类: 其他 发布时间: 10-09 11:38 阅读次数: 0

linux内核链接脚本

  linux kernel不直接提供链接脚本, 而是提供了一个汇编文件vmlinux.lds.S,经过编译之后会生成vmlinux.lds链接脚本文件。vmlinux.lds.S文件在arch/arm/kernel/文件目录中。linux内核不提供.lds的脚本文件, 却提供一个汇编文件的原因是因为内核编译需要条件编译, 而脚本文件是写死的, 不能条件编译。因此要先写一个有条件编译的汇编文件, 然后再使用这个汇编文件进行条件编译得到.lds链接脚本文件。通过分析 Linux 内核的连接脚本文件 arch/
分类: 其他 发布时间: 10-09 11:38 阅读次数: 0

树莓派linux led字符设备驱动(搭建开发环境)

一、在本地搭建环境1.1、获取树莓派Linux内核版本  输入指令:uname -r  结果为:[email protected]:~ $ uname -r5.10.17-v7l+  可知Raspber Pi系统的Linux 内核为 5.10.17-v7l+ 版本,所以下载版本为5.10.y。树莓派linux源码在GitHub上,链接地址为:https://github.com/raspberrypi 也可以通过git clone --depth=1 --branch rpi-5.10.y ht
分类: 其他 发布时间: 10-09 11:37 阅读次数: 0

树莓派OS Lite系统安装LXDE桌面环境

  参考官方主页:https://www.raspberrypi.org/forums/viewtopic.php?t=133691一、安装配置Raspberry Pi OS Lite1.1、安装Raspberry Pi OS Lite  按照https://www.raspberrypi.org/software/operating-systems/#raspberry-pi-os-32-bit所示安装系统。登录系统用户名是pi,密码是raspberry。1.2、配置WI-FI  1、输入指令:
分类: 其他 发布时间: 10-09 11:37 阅读次数: 0