自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Jackindata

嵌入式软件开发 - Linux - TI - Xilinx - NXP

  • 博客(124)
  • 资源 (5)
  • 论坛 (11)
  • 收藏
  • 关注

原创 嵌入式 Linux 应用软件知识体系框架

基础知识编程语言C掌握基本语法掌握标准库的使用C++掌握基本语法掌握基于 C++ 的面向对象开发方法Python掌握基本语法掌握与 Linux 系统的交互Shell(bash)掌握基本语法掌握与 Linux 命令的结合使用Linux 文件系统启动流程sysvinit服务的管理与裁剪systemd服务的管理与裁剪了解 qt4、qt5 的移植了解 yocto构建文件系统常规 Linux 应用

2021-01-13 19:31:49 12

原创 外设测试 - RTC 测试

概述Linux 系统中获取 RTC 时间可能有两种途径,一种是处理器内部的 RTC,另一种是主板上独立的 RTC 模块。我们这里不涵盖前者,因为一般认为处理器良率较高。RTC 模块有几大主要部件:晶振、RTC 芯片、I2C 总线、电池供电。所以测试方案的设计就是从这几个部件的功能确认出发。读取 RTC 时间RTC 芯片除了电池可以供电,板卡本身的系统电源也会给他供电。当从 Linux 系统中能够读取到 RTC 芯片上的时间时,就起码确保了两个功能运行正常:RTC 芯片正常;与处理器连接的 I

2020-12-09 22:32:26 76

原创 外设测试 - ATAES132A 加解密芯片测试

原理使用芯片官方提供的读写操作库,进行先写后读并校验,确认数据一致。示例代码int main(void){ uint8_t ret; aes132p_enable_interface(); ret = write_memory_test(); if (ret != AES132_FUNCTION_RETCODE_SUCCESS) { aes132p_disable_interface(); printf

2020-12-08 21:47:38 44

原创 外设测试 - KEY 测试

概述按键的设计,核心功能就是通过按钮触发一个高电平或低电平脉冲,发送到处理器进行处理。所以测试方法就是去确认获取事件。以下对几类常见按键进行分别说明。用户按键之所以叫用户按键,是因为该类按键触发的事件最终到达用户层,由应用程序自行决定触发何种动作。所以我们的测试方法就是事先运行一个应用程序,监听用户按键事件。当获取到事件时,程序可通过控制 LED 闪烁或者切换显示屏显示内容等方式告知测试员按键正常。复位按键复位一般有两种,有的分别叫做 FULL RESET、WARM RESET,有的

2020-12-07 21:39:09 36

原创 工具 - Ubuntu

记录工具的基本使用,配置方法,常见问题等。有新内容会持续更新。方便下次使用时翻查。官网:https://ubuntu.com/初始化配置这里记录新安装 Ubuntu 后的配置。一般是基于 VirtualBox 安装使用。 配置不自动弹出插入的 U 盘 Settings -> Details -> Removable Media 配置软件源 打开 Software & Updates,配置 Download From 为 China.

2020-12-03 20:24:48 16

原创 外设测试 - LED 测试 - 功能测试

LED 测试是简单直接的,就是确认其能够控制点亮和熄灭。是的,熄灭也要确认,以防电路存在问题。如果短路等原因造成 LED 持续点亮,那这个 LED 就是废的了。LED 的设计有以下几种情况:电源 LED通常为红色,电源通上就亮起。测试方法就是,通上电源,检查确认红色亮起。USER LED这种 LED,我们可以编写程序循环控制其亮灭变化,让测试员随时观察。在 Linux 中常规用户灯会生成设备节点用户控制,比如执行如下命令就可以让其持续闪烁:echo heartbeat >

2020-11-27 19:15:46 52

原创 再考系统架构设计师 - 分享三大要素经验

2018 年第一次考,论文科目差几分,惜败。2019 年,女儿在差不多考试的时候出生,计划中的再考也就没有实施了。今年 2020,我又来了。今年的备考是做得比较糟糕的。工作和生活都不很顺,心态差。都是借口吧,其实就是现在的自己不得劲。无论怎样,这次考完了,也许会通过;如果不通过,明年应该还会再考。做好记录,积累经验。这次考完,我认为主要有三大要素:知识记忆 临场发挥 经验积累知识记忆不用多说,早上的综合知识,大部分题目,懂的就懂,不懂的只能蒙。就看你记住了相关知识点没有。下午的案例分析

2020-11-09 21:00:11 104 2

原创 外设测试 - FAN 接口测试

概述部分板卡使用的是 PWM 功能引脚来控制风扇转速,或者像下图的是只有 GPIO 控制启停。为了测试验证这里除了处理器引脚之外的其他供电电路,FAN 接口的测试只能接入风扇进行控制测试了,需要测试员观察风扇变化确认测试结果。参考代码#!/bin/bash# Description:# Control fan speed in loop.FAN_PATH='/sys/devices/platform/gpio_fan/hwmon/hwmon0/pwm1'RUNNING_FLA

2020-11-04 17:35:28 68

原创 外设测试 - EEPROM 芯片测试

原理EEPROM 挂载在 I2C 总线下,程序基于 Linux 的 I2C 子系统进行数据读写,并校验。参考代码#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <unistd.h>#include <getopt.h>#include <stdbool.h>#include <libgen.h>#include .

2020-10-30 08:32:30 68

原创 外设测试 - ADC 电平采集测试

原理基于内核 IIO 子系统,给定固定输入电压,程序通过设备节点读取读数,换算为采集电压,与实际输入电压计算误差,不大于 5% 为测试通过。自动化测试设计1)考虑相邻通道存在短路的可能,最好给相邻通道设置不同的输入电压值。2)可从板卡扩展接口中的 3.3v、5v 等管脚中通过电阻分压的方法降到 ADC 的采集范围进行输入。参考代码#!/usr/bin/env python# Description:# Test ADC value, error limit is 5%.

2020-10-29 16:54:54 90

原创 嵌入式系统 - Nand Flash 烧写问题排查

问题背景板卡:SOM-TL437x-A1事件:生产了 410 PCS 需要测试、烧写系统,部分板卡烧写出货系统异常。现象:其中 78 PCS 由于 BTB 问题未测试。332 PCS 功能测试后进行烧写,发现只有 47 PCS NAND Flash 烧写正常,285 PCS NAND Flash 烧写异常。内核报错:blk_update_request: I/O error,dd 报错:Input/output error。补充说明功能测试未有直接测试 Nand Flas..

2020-10-27 17:02:42 52

原创 外设测试 - SD 、eMMC 测试

在 Linux 中,SD 卡、eMMC 设备都使用 mmc 总线,所以可以采用统一的测试方法。这里的思路是,先生成一个 1MB 大小的文件,写入设备,然后读取出来存到另一个文件。再使用 cmp 命令对比两个文件的内容是否一致。存储设备可能存在多个分区,所以对每一个分区都进行一次以上测试。mmc_test.sh:#!/bin/bash# Description:# Test SD or eMMC device with mount point. Get mount point from

2020-10-20 08:57:59 135

原创 外设测试 - 4G 模块测试

这里介绍 ME3620、ME3630 4G 模块的使用方法。初始化ARM Linux 板卡#!/bin/shif [ ! -d "/sys/class/gpio/gpio188" ];thenecho 188 > /sys/class/gpio/exportecho out > /sys/class/gpio/gpio188/directionfimsleep 20echo out > /sys/class/gpio/gpio188/dire...

2020-10-20 08:43:19 217

原创 外设测试 - CAN 接口测试

原理底层:Linux 内核 SocketCAN 子系统。应用层:使用 canutils 工具。同一板卡 2 个 CAN 配对测试 使用两根导线,H 对 H、L 对 L 相连。 使用 canutils 中的 canconfig 程序配置波特率,启动。 使用 canutils 中的 candump 接收,cansend 发送。 校验收发的数据是否一致。 1 个 CAN 与辅助板的 CAN 对接测试参考前述测试。1 个 CAN 与 PC 通过 US.

2020-10-16 15:35:03 132

原创 外设测试 - 音频测试 - LINE IN - MIC IN - LINE OUT - PHONE OUT

概述本项测试针对音频接口的 LINE IN、LINE OUT、MIC IN、PHONE OUT。内部 IN 到OUT 的循环,采用先录音然后播放的方式实现。使用到 arecord、aplay、amixer 命令。测试步骤LINE IN 和 LINE OUT使用音频线连接板卡的 LINE IN 和电脑(手机)的音频输出口,电脑(手机)播放音频。然后在板卡执行录音播放脚本。./line_in_test.sh使用耳机或音响音频线接入 LINE OUT,测试员细心听输出的音频,检查是否..

2020-10-16 15:15:35 153

原创 外设测试 - 温度传感器测试

概述温度传感器测试方法有两种。一个是低标准的自动化的,另一个是高要求的人工对比的。但都是基于驱动提供的传感器设备节点进行温度值读取。一个温度传感器设备节点实例:/sys/devices/platform/ocp/44e0b000.i2c/i2c-0/0-0049/hwmon/hwmon1/temp1_input使用 cat 命令即可读取。一般除以 1000 得到摄氏度温度值。自动化测试考虑设备的运行环境与发热情况,设定一个温度波动范围值,比如 30 ~ 50 摄氏度。自动化测试程序自

2020-10-16 14:47:16 86

原创 外设测试 - LCD 接口测试

概述本文描述板卡上的 LCD 功能与接口的测试方案。基于原始设计功能进行测试该方案就是按一般使用方法,接入 LCD 显示屏,直接查看其显示、触控、背光控制的效果确认功能正常。配置成 GPIO 进行测试LCD 的大部分管脚可以在内核(设备树)配置作为 GPIO 功能,由此我们就可以对 GPIO 进行两两配对测试了。不能配置 GPIO 功能的管脚的测试在后文说明。首先,需要确保管脚没有断路(比如接口端子虚焊或 B2B 异常的情况),配对的 GPIO 能够正常拉高拉低即可...

2020-09-28 20:25:54 94

原创 外设测试 - SATA 接口功能测试

缘由早先做的测试程序是扫描所有挂载点,确定接入的固态硬盘的路径,然后进行数据读写校验。这要求预先在固态硬盘上创建一个标记文件,如 here_sata_ssd.flag。这对于测试准备来说很不友好,尤其是需要测试的板卡多了起来。维护测试专用固态硬盘增加了工作量。改进我们这里根本是为了验证板卡的 SATA 接口功能,当接入 SATA 盘时,系统会对设备进行识别。这里识别就可以验证通道正常了。挂载那是后话,不用管了。如果是人工检测,执行以下命令即可。cat /proc/scsi/scsi这将

2020-08-04 18:59:16 367

原创 沃彼特 SD 卡拷贝机

缘由我们公司的一大业务是卖开发板。每一套开发板,需要配套一张系统卡。早先的时候,我们是用 Ubuntu 一张张卡地制作,耗时不说,特别容易出错。对于生产部地人来说,Ubuntu 的使用很麻烦、复杂,还时不时不能正常工作。另外,公司内部还有很多其他卡需要使用,用于核心板系统烧写的烧写卡,用于生产批量测试的测试卡,用于客制化系统烧写的烧写卡,用于高低温测试的特殊卡等。每个型号板卡都有几张。于是找到了拷贝机这么一个好东西。用以解决我们繁重的制卡任务。沃彼特SD 拷贝机简介这里使用的是型号为..

2020-07-28 17:29:06 90

原创 RS232-CAN 对接测试 - 基于乐电新南 RS232-CAN 转换器

缘由在板卡的批量生产测试中,CAN 可以两个互相收发数据做功能检验,但部分板卡只有一个 CAN 接口的情况下,不方便测试。于是找到了这样一个 RS232-CAN 转换器,让 CAN 与 RS232 进行对接测试。转换器简介对 CAN 总线信号与 RS232 通道数据进行相互转换,以达到两种不同协议进行数据通信的效果。还有高级的数据过滤等功能可以配置使用。连接说明基于广州创龙的 5728-IDK 板卡测试。1)转换器的 VIN 管脚需提供 5V 电源供电。2)转换器的 GND、CA

2020-07-28 10:51:52 129

原创 USB TO UART 调试串口的一种新测试方案

旧方案之前在做专用 ATS 测试底板时,应用了一个与普通调试串口进行对接的方案(https://blog.csdn.net/engrossment/article/details/103064310),这个方案适用于定制底板,因为他不经过串口转 USB 芯片 CH340,在待测底板上这就属于漏测了。方案一采用一个现成的串口转 USB 独立模块,接入待测板的 Micro USB 口,转为串口后再与其他普通串口对接,进行数据收发测试。但实测时才注意到,板卡和模块上的两个 CH340 对接,根本互不认

2020-07-27 13:51:11 288

原创 USB 3.0 批量生产测试

缘由早期我们的 USB 接口测试不区分 1.x、2.0、3.0,统一采用对接入的 U 盘进行数据读写并校验的方法。为了区分不同的接口还需要在 U 盘预先创立不同的标识文件,让测试程序识别,用于报告哪个接口通过或失败。后来改进了创建标识文件的方案,直接识别插入的 U 盘,不区分哪个是哪个,除了问题再让维修人员进一步排查。毕竟,出问题概率很低。但现在发现 USB 3.0 接口可能存在一种情况,其部分差分线损坏了,依然能够识别到接入的 U 盘。这样当前测试方案就无法覆盖 3.0 接口的所有功能了。

2020-07-24 11:36:16 141

原创 嵌入式 Linux 板卡禁用显示器的光标闪烁

问题起因需要在 HDMI 显示器输出彩色条带进行展示,采用的方法是直接往 /dev/fb0 设备节点写 RGB。结果效果如下图:有一个光标在闪烁。这个光标其实来自于显示终端的登录提示,在提示输入用户名进行登录。其提示符被我的彩色条带覆盖了,单这个光标闪烁时相当于不断更新,和我的程序争夺显示设备。尝试解决思路一关闭该登录终端。找到 /etc/system/systemd 下有一个参数为 tty1 的登录服务,于是把它停掉。结果登录终端没有了,但显示器上还有闪烁的光标,处于左上角。未

2020-07-22 18:14:01 117

原创 系统软件版本变更规范

总原则版本号与具体软件内容具有唯一对应关系,内容有任何变更,版本号必须跟随变更。 自定义版本号,遵循语义化版本原则( https://semver.org/lang/zh-CN/)。uboot示例:u-boot-2017.01-v1.2.1-g8fc2019说明:u-boot 是固定前缀,表示类别;2017.01 是所使用的 uboot 的源码版本;v1.2.1 是自定义版本号;g8fc2019 是我们内部 Git 仓库的短提交号。kernel示例:linux-rt-4.9.65-v

2020-05-14 17:56:07 140

原创 修改 systemd 配置以加快系统启动速度

我们默认的系统启动耗时需要 30 秒以上。但客户做产品,需要尽快把系统启动,以便程序产品功能。一开始我是琢磨着怎么在 OE 里修改或追加 bb 配置,直接构建一个定制的符合启动时间要求的文件系统出来。但 OE 的配置很复杂。见https://blog.csdn.net/engrossment/article/details/105866276既然整个文件系统的启动是由 systemd 负...

2020-05-08 15:39:29 225

原创 基于 OE 构建单一工具包

前面有讲解了 OE 开发环境的搭建以及基本使用:https://blog.csdn.net/engrossment/article/details/105866276在此基础上,下面以 vim 工具的构建进行举例说明。开发环境中有各种各样的工具包,搜索确认有 bb 文件配置好即可轻松进行构建。开发环境中已经有 vim 的 bb 文件写好:tisdk/sources/meta-opene...

2020-05-07 18:26:32 69

原创 基于 OE、Yocto、Arago 构建 TI 板卡的定制文件系统

环境搭建PC 系统Ubuntu 或 CentOS。推荐 Ubuntu 14.04、16.04。安装必要工具HOST# sudo apt-get install git build-essential python diffstat texinfo gawk chrpath dos2unix wget unzip socat doxygen libc6:i386 libncurses...

2020-04-30 17:34:27 254

原创 《代码大全》笔记 4 - 语句

豆瓣:https://book.douban.com/subject/1477390/《Code Complete》2d ed,CC2核对表代码使得语句之间的依赖关系变得明显吗 子程序的名字使得依赖关系变得明显吗 子程序的参数使得依赖关系变得明显吗 代码容易按照自上而下的顺序阅读吗 相关的语句被组织在一起了吗 把相对独立的多个语句放进子程序里了吗2020年03月31日...

2020-03-31 22:11:12 53

原创 《质量总监成长记》笔记

豆瓣读书:https://book.douban.com/subject/30766067/案例详实,还有很多心理历程描写。书中主人公唐风的努力、无奈、喜悦,让人动容。可读性很高。以下为本书的阅读总结导图。2020-03-31...

2020-03-31 16:21:58 171

原创 CAN 通信测试工具 canutils

概述CAN,Controller Area Network,控制器局域网,一种高可靠性的现场总线。广泛用于汽车电子、工业控制通信。canutils 工具包内含 5 个独立的程序:canconfig、candump、canecho、cansend、cansequence。这几个程序的功能简述如下:canconfig:用于配置 CAN 总线接口的参数,主要是波特率和模式。 candump...

2020-03-31 15:14:05 1645 2

原创 系统时间与 RTC 时间设置方法

方法说明嵌入式设备,尤其是带电池的设备,系统时间特别依赖于 RTC 来维持。这一般也没问题,都有成熟的实现方案。但涉及时区时,就有一些坑需要特别注意了。为了内核的运行可靠,RTC 的时区设置保持为 UTC,当系统时区不是 UTC 时需要特别注意设置方法,所以分两种情况进行说明。 系统时区为 UTC 系统时区不为 UTC ...

2020-02-28 22:56:36 1369

原创 异构多核之PRU

PRU 全称是The Programmable Real-Time Unit Subsystem,也叫 PRUSS。在 TI 早期的 OMAPL138、C674x 等系列 SoC 上,还是叫 PRUSS。到现在主推的 Sitara 系列,增强了其工业应用,改为叫 PRU-ICSS,也就是Industrial Communication SubSystem。众所周知,SoC 很复杂,里面集成...

2020-02-27 22:05:50 376

原创 用递归方法扫描 SVN 仓库下载符合条件的文件

#!/bin/bashset -eIFS=$'\n'DEMOS_URL="https://192.168.1.199/svn/tl-linux-applicationRS/2-demos"function list() { local URL=$1 local DIRS=$(svn list ${URL}) for dir in ${DIRS[*]}; ...

2020-02-20 18:04:31 118

原创 《代码大全》笔记 3 - 变量

豆瓣:https://book.douban.com/subject/1477390/《Code Complete》2d ed,CC2变量初始化的原则在声明变量的时候初始化。 在靠近变量第一次使用的位置初始化它。结合第一条,应当在即将使用的时候声明,然后马上初始化变量。 尽量使用 final 或 const 声明变量,防止意外修改。 构造函数初始化类的所有...

2020-01-07 20:46:14 54

原创 《代码大全》笔记 2 - 创建高质量的代码

豆瓣:https://book.douban.com/subject/1477390/《Code Complete》2d ed,CC2设计中的挑战设计是一个险恶的问题 你必须首先把这个问题“解决”一遍以便能够明确地定义它,然后再次解决该问题,从而形成一个可行的方案。 设计是个了无章法的过程 设计就是确定取舍和调整顺序的过程 设计受到诸多限制 设计是不确定的 设计是一...

2019-12-15 18:35:14 63

原创 板卡复位功能测试规范

概述复位,作为板卡独立设计的功能,需要独立的专门性测试。测试用例首先根据板卡设计筛选出所有受复位功能影响的外设和器件,作为该项测试的测试对象。然后,通过 reset 键(full、warm、PMIC)、reboot 命令,各种复位系统的方法,分别执行测试:保持外设连接不变,复位系统,然后基于功能测试方法检查各接口、器件是否正常。 保持外设连接不变,复位系统,然后拔下再插入可热插拔...

2019-12-10 20:46:43 346

原创 一个简单的内存读写带宽测试程序

之前有写文章介绍了 mbw(https://blog.csdn.net/engrossment/article/details/88314722)以及 lmbench(https://blog.csdn.net/engrossment/article/details/83830363)。其中 mbw 的只是简单使用了 memcpy 系统调用进行测试,而 lmbench 里面的 bw_mem、str...

2019-11-25 17:05:01 1197 2

原创 UART0 作为调试串口的同时与普通串口 UART3 对接测试的方案

缘由在硬件自动化测试中,数据通信接口最好有对接的方式,由程序自动完成数据收发与校验,从而实现对硬件接口的测试验证。这里讲到的 UART0 与 UART3 的测试,由于为了保留 UART0 作为调试串口的功能,便于维修人员使用,所以需要特别的处理方案。硬件连接原理这里 UART0 是调试串口,CP2108 是 USB 转串,用于接上位机进行使用调试串口。UART3 是一个普通的待测串...

2019-11-14 11:34:54 418

原创 重开 CSDN 博客一周年

大学的时候开始写技术博客,最早是在 CSDN 开的。后来整了个个人博客(http://liaojieliang.com/),处于某个记不清的原因,清空了 CSDN 的博客。不久之后觉得个人博客的访问量低得可怜,又不便于与他人做技术交流,于是在 cnblogs 开始写。然后到去年的今天,2018 年 11 月 8 日,重新在我之前已清空了的 CSDN 博客写下新的第一篇博客《命令行终端下的处理进...

2019-11-09 15:38:06 68

原创 《研发管理破局》笔记 10 - 技术管理

豆瓣:https://book.douban.com/subject/30402872/10.1 技术开发于产品、平台开发的区别 产品开发与产品平台开发的需求分析差异:产品开发需求直接来源于客户,产品平台开发需求源于产品型谱的差异化分析。 产品开发与产品平台开发的验收标准差异:产品开发的验收标准通过设计确认,产品平台开发的验收标准是充分支持同类型新产品的开发。 10...

2019-11-07 08:29:46 112

计算本周是一年中第几周

第几周 C 程序 代码 计算本周是一年中第几周

2012-10-21

ssh-keygen 中文手册

ssh-keygen 中文手册

2012-09-03

Linux下简单C++ socket编程

Linux下简单C++ socket编程,有文档、源码,几个类。

2012-08-02

USB-3.0-生产测试方案调研.pdf

生产检测批量自动化测试方案,基于功能特性进行测试,不作电气特性、性能测试,用于快速检测由产品生产引起的问题,而非设计缺陷问题。

2020-07-27

linkloop-1.0.1-hp.tar.gz

对 TCP/IP 协议栈中的链路层的直接数据收发测试,以便发现一些在上层网络层、传输层无法发现的问题。

2019-07-30

codeblocks编译GTK程序 提示undefined reference

发表于 2012-06-01 最后回复 2013-06-19

C程序调用system启动rsync,密码不知道怎么输入。

发表于 2012-08-29 最后回复 2012-11-23

codeblocks编译生成的GTK程序在其他电脑无法运行

发表于 2012-06-14 最后回复 2012-06-14

A*算法中对估价函数h(n)的设定问题

发表于 2012-05-20 最后回复 2012-06-01

(求助)写的程序在开发板上通过串口读RFID不稳定(有时能读到有时不能读到)

发表于 2012-03-05 最后回复 2012-03-10

初学嵌入式,求推荐好书。多多益善啊

发表于 2011-08-15 最后回复 2011-09-23

各种操作系统,大致都使用些什么语言来编写?

发表于 2011-09-22 最后回复 2011-09-23

关于电动机的驱动控制的请教

发表于 2011-08-14 最后回复 2011-08-19

为什么说如果预先不知道堆的大小,使用数组线性表存储堆比较好?

发表于 2011-08-15 最后回复 2011-08-16

一个关于把数组里的‘0’去掉的汇编程序,不知道哪里出错了

发表于 2011-05-26 最后回复 2011-05-27

一个关于十六进制转二进制的程序,求助

发表于 2011-05-23 最后回复 2011-05-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除