python2.7/serial/test/ARM Linux

36 篇文章 0 订阅
14 篇文章 0 订阅
#-*- coding:UTF-8 -*-
# author:Lake Hu :2020/9
# -*- coding: utf-8 -*-



import time 
import serial
import re
import random
import time
 
localtime = time.asctime(time.localtime(time.time()))

reboot_timeout_default = 30 
read_timeout_default = 5

ser = serial.Serial("COM1", 115200, timeout=read_timeout_default)
print "open success:%s  bps %d" %(ser.name,ser.baudrate)


def print_cmd_out_serial(fail_keyword_match=""):
    while True:
        # read line
        data = ser.readlines()
        # check if line is not empty
        if not data:
            if fail_keyword_match!="":
                continue 
            else:
                break
        else:
            for line in data:
                line = line.strip() 
                print "%s" % (line)

                if fail_keyword_match!="" and re.match(fail_keyword_match,line):
                    return False
            break
    return True



def mount_check():
    print("send mount now")
    sendcmd="mount\n"
    ser.write(sendcmd)
    
    return print_cmd_out_serial("/dev/mmcblk0p1 on /flash")


def mount_flash():    
    print("send echo  3 > /proc/sys/vm/drop_caches now")
    sendcmd="echo  3 > /proc/sys/vm/drop_caches\n"
    ser.write(sendcmd)
     
    print("send mount /dev/mmcblk0p1 /flash now")
    sendcmd="mount /dev/mmcblk0p1 /flash\n"
    ser.write(sendcmd)

    return print_cmd_out_serial("failed")



def dd_test(bs,count,skip,readtimeout,isbackgroud=False):    
    #sendcmd = "rm  -f /tmp/data  \n"   
    #print("send %s "%(sendcmd))
    #ser.write(sendcmd) 
    sendcmd = "dd if=/dev/mmcblk0p1 bs=%s count=%d   skip=%d of=/tmp/data \n" %(bs,count,skip)
    print("send readtimeout=%d : %s"%(readtimeout,sendcmd))
    ser.write(sendcmd)
    ser.timeout = readtimeout  
    print_cmd_out_serial()

    ser.timeout = read_timeout_default ### reset 
    if(isbackgroud==False):
        sendcmd = "dd  if=/tmp/data  of=/flash/data ;sync \n"
    else:
        sendcmd = "dd  if=/tmp/data  of=/flash/data%d_%d_%d ;sync &\n" %(bs,count,skip)
    print("send %s"%(sendcmd))
    ser.write(sendcmd)    
    print_cmd_out_serial()
    return True


def reboot():
    print("send reboot now")
    sendcmd="reboot\n"
    ser.write(sendcmd)


def kreatv_dd_test():
    bs = 1
    count = 2*1024*1024
    skip = 0x438
    readtimeout = read_timeout_default

    for i in range(1,20): 
        bs = random.randint(1,100)
        count = 2*1024*1024/bs +random.randint(1,500)
        skip = i*random.randint(1,100) + 1024*bs
        ##readtimeout = (bs*count/1024/1024%300) * 2   ### max wait for 5min *2 
        ##if(readtimeout == 0):
        ##    readtimeout = read_timeout_default
        
        print time.asctime(time.localtime(time.time())), "dd test No. ", i
        dd_test(bs,count,skip,read_timeout_default,random.choice([True, False]))
         


def kreattv():
    starttime = time.asctime(time.localtime(time.time()))
    while ser.isOpen():
        print starttime, "Start Time"
        reboot()
        print time.asctime(time.localtime(time.time())), "Reboot ===> Sleep"
        time.sleep(reboot_timeout_default + random.randint(1,10))
        while True:
            # read line
            data = ser.readlines()
            # check if line is not empty
            if not data:
                break
            else:
                for line in data:
                    line = line.strip() 
                    print "%s" % (line)
 
        sendcmd="uptime\n"
        print("send %s" %sendcmd)
        ser.write(sendcmd)
        print_cmd_out_serial("min")

        if(mount_flash()==False):
            print time.asctime(time.localtime(time.time())), "!!! Got corrupt, stop now!! "
            ser.close()
            os._exit(1)
        
        kreatv_dd_test()
        print time.asctime(time.localtime(time.time())), "One loop is done"
    print time.asctime(time.localtime(time.time())), "Completely Stop Close"
    ser.close()
    
if __name__ == "__main__":
    kreattv()

 

根据提供的错误信息,看起来是权限问题导致安装 `pbr` 失败。具体来说,错误提示了 `/usr/lib/python2.7/site-packages/pbr` 目录的权限被拒绝。 要解决这个问题,你可以尝试以下几种方法: 1. 使用管理员权限重新运行安装命令。在命令行中加上 `sudo` 命令来提升权限,例如: ``` sudo pip install pbr ``` 这会使用管理员权限来运行安装命令,解决权限被拒绝的问题。 2. 如果你没有管理员权限,可以尝试使用 `--user` 参数来进行用户级别的安装。这样,`pbr` 将被安装在用户主目录下的 `.local` 目录中,而不是系统目录。使用以下命令进行安装: ``` pip install --user pbr ``` 这会将 `pbr` 安装到你的用户目录下,避免权限问题。 3. 如果上述方法都无效,你可以尝试创建并设置正确的文件夹权限。首先,使用以下命令创建一个目录: ``` sudo mkdir -p /usr/lib/python2.7/site-packages/pbr ``` 接下来,使用以下命令更改目录的所有者和权限: ``` sudo chown -R your_username:your_username /usr/lib/python2.7/site-packages/pbr ``` 将 `your_username` 替换为你的用户名。这将确保你有足够的权限来安装 `pbr`。 4. 此外,根据错误信息中的提示,你可以考虑升级 `pip` 到最新版本。使用以下命令升级 `pip`: ``` pip install --upgrade pip ``` 然后再尝试安装 `pbr`。 希望这些方法能够帮助你解决问题。如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值