memtester android 移植及测试说明



一、什么是memtester,有什么用?

1、memtester是一款开源的内存测试工具,一般用来Linux下测试内存的稳定性,捕获内存错误和坏位,测试内容包括:随机值,异或比较,减法,乘法,除法,与或运算等等。

2、其下载地址为:http://pyropus.ca/software/memtester/ 文件为 memtester-4.3.0.tar.gz

3、使用方法,在命令行界面输入 memtester [size: B/K/M/G] [counnts]

二、代码简单说明

其核心代码包括:memtester.c 和 tests.c 2个文件,memtester.c 主要内容为测试流程,tests.c 的主要内容为测试方法,下述为主要函数的图片:

三、Android的移植

1、在Android的源代码的system/core 目录新建文件夹 memtester,然后将所有的文件复制到此文件夹,并删除Makefile文件。

2、新建Android.mk 文件,输入如下内容:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_SRC_FILES := \
    memtester.c \
    tests.c

LOCAL_SHARED_LIBRARIES := libcutils

LOCAL_MODULE := memtester.32bit

LOCAL_C_INCLUDES := \
        memtester.h \
        tests.h \
        types.h

#LOCAL_CFLAGS := -Werror

include $(BUILD_EXECUTABLE)

3、编译 memtester,步骤如下:

先执行 source build/envsetup.sh ,然后 lunch 并选择正确的项目,输入

mmm /system/core/memtester

就可以到out/target/product/xxx/system/bin 目录下找到编译好的memtester.32bit 文件,此编译好的二进制文件可以目前32bit的Android平台的机器进行内存测试。

四、应用

1、已移植了此代码的平台,直接输入 memtester.32bit 100M 10,即可进行内存[DDR]测试。

2、未安装可用adb 推送到系统中进行测试,按照如下顺序:

   adb root 
   adb remount
   adb push memtester.32bit /system/bin/
   adb shell
   memtester.32bit 100M 10

Linux GPIO 使用说明


一、GPIO是什么?

GPIO 是 General-purpose input/output 的简写,意为通用的IO口,使用方法主要如下,一般情况下包含有如下的功能:

1. 电平输出功能,可以输出高电平和低电平。
2. 输入功能,可以作为输入口,用来检测外部电平。
3. 中断功能,可以作为中断口,配置后用来响应外部输入的中断的信号,用来触发对应的中断服务,一般包括:电平中断、边沿触发等。
4. 其他可复用的功能。

二、Linux 系统的GPIO控制代码在哪里?

标准头文件

<linux/gpio.h> <asm-generic/gpio.h>

实现文件为

<driver/gpio/gpiolib.c>

三、如何使用GPIO口?

1. GPIO的定义和获取GPIO号

1) GPIO的定义都是在dts文件中,类似以下的方式定义

    gpio_sensor_ctl {
        compatible = "sensor_ctl";
        sensor_ctl_io = <&gpio1 GPIO_B2 GPIO_ACTIVE_HIGH>;
        status = "okay";
    };
    

其中 sensor_ctl_io = <&gpio1 GPIO_B2 GPIO_ACTIVE_HIGH>; 行,为GPIO的定义。

2) 代码内获取GPIO口,代码如下:

   unsigned sensor_ctl_io;
   struct device_node *sensor_np = pdev->dev.of_node;
   unsigned long irq_flags;
   sensor_ctl_io = of_get_named_gpio_flags(sensor_np, "sensor_ctl_io", 0, &irq_flags);
   

其中sensor_ctl_io即获取到GPIO号,函数原型为:

   int of_get_named_gpio_flags(struct device_node *np, const char *propname,
                               int index, enum of_gpio_flags *flags);   
   

注意:要根据名字获取对应的GPIO号,还有匹配驱动的compatible值,此部分本文略过不说,下次说明。

2. 申请,释放GPIO,配置GPIO方向和电压

1) 申请GPIO

gpio_request(gpio_num, "xx gpio");  //申请GPIO, 返回0为申请成功,否则失败。

2) 配置GPIO方向

int gpio_direction_input(unsigned gpio);//设置为输入
   int gpio_direction_output(unsigned gpio, int value);//设置为输出,并初始化值为value.
   

3) 输入时,获取GPIO的值

int gpio_get_value(unsigned gpio);//返回value
   int gpio_get_value_cansleep(unsigned gpio);//输入端口:返回零或非零,可能睡眠
   

4) 输出时,配置输出值。

gpio_set_value(unsigned gpio, int value);//设置值
   void gpio_set_value_cansleep(unsigned gpio, int value);//输出端口设置值:可能睡眠
   

5) 释放GPIO

 void gpio_free(unsigned gpio);
   

6) 检查GPIO口是否有效

 int gpio_is_valid(int number);//检测此gpio口是否有效
   

7) GPIO作为中断使用,只有做为输入脚的GPIO才能做为中断脚,将GPIO配置成中断按照如下方式:

 gpio_to_irq(unsigned gpio);

AndroidX 简介



AndroidX 是 Android 团队用于在 Jetpack 中开发、测试、打包和发布库以及对其进行版本控制的开源项目,主要想要用来替换原来的android.support库的。

一、Androidx 的特点

AndroidX 对原始 Android 支持库进行了重大改进。与支持库一样,AndroidX 与 Android 操作系统分开提供,并与各个 Android 版本向后兼容。AndroidX 完全取代了支持库,不仅提供同等的功能,而且提供了新的库。此外,AndroidX 还包括以下功能:

1. AndroidX 中的所有软件包都使用一致的命名空间,以字符串 androidx 开头。支持库软件包已映射到对应的 androidx.* 软件包。有关所有旧类到新类以及旧编译工件到新编译工件的完整映射,请参阅软件包重构页面。

2. 与支持库不同,AndroidX 软件包会单独维护和更新。从版本 1.0.0 开始,androidx 软件包使用严格的语义版本控制。您可以单独更新项目中的 AndroidX 库。

3. 所有新支持库的开发工作都将在 AndroidX 库中进行。这包括维护原始支持库工件和引入新的 Jetpack 组件。

二、使用 AndroidX

如果要在新项目中使用 AndroidX,则需要将编译 SDK 设置为 Android 9.0(API 级别 28)或更高版本,并在 gradle.properties 文件中将以下两个 Android Gradle 插件标记设置为 true:

1. android.useAndroidX:如果设置为 true,Android 插件会使用相应的 AndroidX 库,而非支持库。如果未指定,则该标记默认为 false。

2. android.enableJetifier:如果设置为 true,Android 插件会重写其二进制文件,自动迁移现有的第三方库以使用 AndroidX。如果未指定,则该标记默认为 false。

RockChip 平台LCD初始化代码转化工具 — python版


工作中为了调试客户给的lcd,通常需要写入初始化参数,但客户提供的初始化代码,通常是各种测试夹具的单片机代码,和rockchip平台的lcd初始化代码的格式差异非常大,若是手动修改,几百行的代码,修改的起来非常的枯燥,而且比较容易出错,于是,我抽空写了一个简单的工具,做自动转化,这里做个记录:
继续阅读“RockChip 平台LCD初始化代码转化工具 — python版”

Android am start 启动应用记录


在Android中,除了从界面上启动程序之外,还可以从命令行启动程序,使用的是命令行工具am,启动的方法为:

adb shell am start -n {包(package)名}/{包名}.{活动(activity)名称}

1. adb 打开设置:

adb shell am start com.android.settings/com.android.settings.Settings // 主页面
adb shell am start com.android.settings/com.android.settings.SecuritySettings // 安全
adb shell am start com.android.settings/com.android.settings.RadioInfo // 手机无线信息
com.android.settings.AccessibilitySettings //辅助功能设置
com.android.settings.ActivityPicker //选择活动
com.android.settings.ApnSettings //APN设置
com.android.settings.ApplicationSettings //应用程序设置
com.android.settings.BandMode //设置GSM/UMTS波段
com.android.settings.BatteryInfo //电池信息
com.android.settings.DateTimeSettings //日期和坝上旅游网时间设置
com.android.settings.DateTimeSettingsSetupWizard //日期和时间设置
com.android.settings.DevelopmentSettings //开发者设置
com.android.settings.DeviceAdminSettings //设备管理器
com.android.settings.DeviceInfoSettings //关于手机
com.android.settings.Display //显示——设置显示字体大小及预览
com.android.settings.DisplaySettings //显示设置
com.android.settings.DockSettings //底座设置
com.android.settings.IccLockSettings //SIM卡锁定设置
com.android.settings.InstalledAppDetails //语言和键盘设置
com.android.settings.LanguageSettings //语言和键盘设置
com.android.settings.LocalePicker //选择手机语言
com.android.settings.LocalePickerInSetupWizard //选择手机语言
com.android.settings.ManageApplications //已下载(安装)软件列表
com.android.settings.MasterClear //恢复出厂设置
com.android.settings.MediaFormat //格式化手机闪存
com.android.settings.PhysicalKeyboardSettings //设置键盘
com.android.settings.PrivacySettings //隐私设置
com.android.settings.ProxySelector //代理设置
com.android.settings.RadioInfo //手机信息
com.android.settings.RunningServices //正在运行的程序(服务)
com.android.settings.SecuritySettings //位置和安全设置
com.android.settings.Settings //系统设置
com.android.settings.SettingsSafetyLegalActivity //安全信息
com.android.settings.SoundSettings //声音设置
com.android.settings.TestingSettings //测试——显示手机信息、电池信息、使用情况统计、Wifi information、服务信息
com.android.settings.TetherSettings //绑定与便携式热点
com.android.settings.TextToSpeechSettings //文字转语音设置
com.android.settings.UsageStats //使用情况统计
com.android.settings.UserDictionarySettings //用户词典
com.android.settings.VoiceInputOutputSettings //语音输入与输出设置
com.android.settings.WirelessSettings //无线和网络设置

继续阅读“Android am start 启动应用记录”