From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 93237C433F5 for ; Mon, 28 Mar 2022 15:36:59 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 60A0283B94; Mon, 28 Mar 2022 17:36:57 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="xx7y3mHb"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 1BA5383B99; Mon, 28 Mar 2022 17:36:56 +0200 (CEST) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on060a.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0d::60a]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 5A6D383B27 for ; Mon, 28 Mar 2022 17:36:53 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LZRjW6/yPVexvVEXY2z5OIUPTG+yQEHO+UmEbQmFJYUoYebDM6jDqUAOAKPQYsEBVTJuWaSFodU5vsSTMHPX8jgpM0KIrWS889DytiSuZ1nyab82h7rh330wCBOeiUNbfMjEivLvHK5wQX5/zVo1eS8NA6CyxyDmr5NuPNeZPUai+lKMDmgL9nOm/D5MhL1kimcxtdXpRGw0VMPdmirKSbVQDgws+JmY1wXfK/ROumskM7+ogs0y97pYpDMysnL5AEjF6C0aehFx/F20QQoSDHdwxGch3sLWb3tZwKpwpRDG9Lx/Ey+REAq1B907vBLCLyhdQ0WcnuIcnV1m1+E7VQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=gkaNpS87k1CjJo88JDgO9p+I4PjuiW2fZV2L4V88BSU=; b=FwbrRbuAX/W9Kh/UYcFs0qhMYC/JcwKXNUDUPoB6Rv4kNezNpO6TcR+qQkjEFIiT48sXrcgSbK2zyt0w1CCu/dGCEdS/V6SxtRk0156lesrntuJPbw+WJC6uNNCw5qw8nedvabl3oCc2g6RA77Y8KvvZvClbPW0pAFJMmrqrc9Ns3ULaMMNzzPymg3CSeFGVx7Wt/zNCM0cyHDGlvndpvT0v5UIev63Gj2gq8aSeVREASBWRQTlKumrPIVUtR0rCXifR8g0LUyOy7RfjVLPTwfPl7QQPytIVsnp6ycJ8Jk+TqQ987nf8xQCfQUGzvKkNWILQpRogzuA+RtMww0u8MA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gkaNpS87k1CjJo88JDgO9p+I4PjuiW2fZV2L4V88BSU=; b=xx7y3mHbAka7yii/+iVqZye2sMlZg9PDmx8ZvoGV/CBpnxzY2RVImzyHjA5S2Vtv7nfn4T0jsMRQewFhmU/MPTDsoj/KFIKnwCc39pWbjLrqBNXVbfFn2ecPToLwOVXIpRjm+pGG4OLFzWebHa5XRkv9AP+SXm54vCCZ6UgKh9HPquUt1IEy5J55GxgiMQ/StcL1jfXWaNxx/oaV9u4VEm92P1IRKAFgZTTO98fXrEnULqw7EzooWfyjzW/+q/DtJzwy6R1sWu9G1zgBap6w/TZjxt3DlT53vXyHYpcuUAoApdwiY0wKzORkwQyWcp0oeBx4VOSPQSbP+m5k3bSBYw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by PR3PR03MB6427.eurprd03.prod.outlook.com (2603:10a6:102:7b::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.22; Mon, 28 Mar 2022 15:36:51 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::356c:789f:d20f:92bc]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::356c:789f:d20f:92bc%7]) with mapi id 15.20.5102.022; Mon, 28 Mar 2022 15:36:51 +0000 Subject: Re: [PATCH v3 16/29] serial: Add semihosting driver To: Simon Glass Cc: Tom Rini , Linus Walleij , Liviu Dudau , Andre Przywara , U-Boot Mailing List References: <20220322205938.1721846-1-sean.anderson@seco.com> <20220322205938.1721846-17-sean.anderson@seco.com> From: Sean Anderson Message-ID: Date: Mon, 28 Mar 2022 11:36:46 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-ClientProxiedBy: BL0PR02CA0048.namprd02.prod.outlook.com (2603:10b6:207:3d::25) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f2cb41e9-6f16-4f67-7d8b-08da10d0c7bd X-MS-TrafficTypeDiagnostic: PR3PR03MB6427:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: kR8div9+3a5USbaoXHW2Nafs6KTMIrQrbO5B20dTmmeXBCveipomsHwGNCRpEWpXZ/ikJ2WUGNOim1oMOU40l2DeOM9FZXyd6N7PodCCl52Hdv7W+M3TA2IL+d7GtyFH1HWRzWSNsH7EQtWo07RuPbiioba327uhcDRpGthmHb2bg9KbzLNDR3SjSxeSNsCkgXzpTc/yMQ22WjUixCv+iI3Ug3ENLhIwem0JqwfLdPmK5FP0bmnFAFK3ae5eoVxjif5yk+nyd9AZUlp7A3ZRiDkVwPdL8nyf9l1dWSeFUL+Nupgn9+mc3vxtBw2iWxgwBW6zS00mNOYpqIR24ncmPw0Va5qJ/EYNAh2lOcpgQ/Jyuqz6Lt2yhXMPICD1IJkBzb6IW/u+Xltjwovk2+vnt6cYaFuJ2YUNkjJ4zYyn59cOySCkuST3VSvtMmUQTQuYnsFY4TofNuIe0ajrQ5B6K5ojYR99EWBGe7Ox5uRA1KYEOkOKlRAnIQ7MB32uFlyIN0jw5KXW1Dgd0Z0Q7frT3h+mNcLh59nLLhNV3NbGnioFYKm8Uopj11iz40LYXSxKtJP8t4FqVxNqUkpwk6zy2IHMhWGMwnanK6z+7rpz3BIrEk0L0/qNDuVYUvmhk/Zzzr7bbEFTk5TZU5+IOW1HOJE8tT3l8Dyi4Dm3ExkrXtGDnWzaFlHm+5iOXIajeoovYqh8db02YtynLfNd0gIYC84UqCZXuRpaRBrbVXjCEttgXkOpf8CGwYGwJZ3KI7Nn0LM7g+mukSkJQzKsmZ9HcQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(38350700002)(6486002)(6916009)(26005)(186003)(508600001)(8676002)(38100700002)(6666004)(54906003)(6506007)(66946007)(2616005)(4326008)(31696002)(5660300002)(83380400001)(8936002)(66556008)(66476007)(36756003)(52116002)(86362001)(44832011)(2906002)(53546011)(6512007)(31686004)(316002)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RFdiTXJHNVR6amN2Wkpnd3JhRWR4Q1NuZDBxOXpSWFZ4QTNreHdpYm9nUVdk?= =?utf-8?B?T3FqL3djWldhSm9JcUVFcHF5a3RQWURJNncwZU1zbE9ma01QYVdxTlNyeTdk?= =?utf-8?B?QWc1Y2lybURzOHA4UHg3RWRsUFJoTVNITUNRUVV1VEpvblZVajBmOXZFL2xq?= =?utf-8?B?Vy9ScmNhUmhPSjRyT2NrYlFKcE8vR2JIWkVWZEtSa1lUYks5MHFMUkFJaUlT?= =?utf-8?B?M2pZZ21teTBoeUhMV2czTzBReWEwY3BMTEluRjVoSWZ5MHRmOThOMTdjMzhK?= =?utf-8?B?b3lqRlBmbEwyeS9SWVpTakdQWXIxOXdNTmtoWGhSb2lrUmxjOUhEODFkQjFM?= =?utf-8?B?UE1VeUhBaVV0M0tDc3hJVk9nblc2TU83ZEI0L3oxcWJuN3N3d2ZzTmEwbFVK?= =?utf-8?B?VlBGY3F4NGJiYU5ZM1dVTWl5TW1tZlZsNjluODZGZ21Pa2NuM2R2aTJQdGVG?= =?utf-8?B?Vjd4ZU01MWdYZ0VRVWF3SzZVc1VGekNCZmVjWFd1UWY4TlBMRXdRTis3NWY0?= =?utf-8?B?WU1lR1NWWWIrYWRramlXNlZSaXRDaFUyam1yUHlvSTk5OS96TXBuQUUrczh1?= =?utf-8?B?ZHJzMlpuUGkxclZiQzRBcGJoRjk0dFZPTnJmNTlUV3I5UjJBcnFVNy9LTklF?= =?utf-8?B?UUFGODRJR2tXazZBOHlTUVJKdExydHlQU0FweVFXbjBNcXZTQ29VRzNSR055?= =?utf-8?B?RG5ONXlkMUlsTGxJSWM2N0FPeExiQjlZa2pKT3RRK290UDJQLzdwU2NRYnIv?= =?utf-8?B?OVc4K1N2RFpDOWdETGhTMUhUdHJRVE1rbWZidmpwVmNCeDAzak5SOUd0TjRa?= =?utf-8?B?dENuWEs3U2RjanV0dzdGVmdJaTZ6UVJSa0lhb0hRQzJGLzhyNjJRWnlOeDlP?= =?utf-8?B?Q0c3TFNHaUs2VENnRDdoTHlJMklCU0FnWk1JMFpvYm1pMXZwS0lJSDJVUEkr?= =?utf-8?B?YVdUb0dJRkJVYm1HQkhtQXBNSzVvblMwYjUvaktvNUhxSjNxMW9LeURYNndI?= =?utf-8?B?ZnUzWVI1MDhoV1NacXF1TVVjOC8ra05MWVFTUjZHUU9BQXh2TEVWSE9OekZP?= =?utf-8?B?VUdabEpsTXNoUWdHTDZVNllyRkZFZmN4dHFqMU9vcmdxaTRpQVpQckhJN0dH?= =?utf-8?B?VXZhUjZWdXYyWFRyRmVSR3ovbUN4c1NLKzFsS2l5QitxRGdlUGc2N1hNVXZy?= =?utf-8?B?NGgyUlladTdoVlNiRis0S0FORWViSEFOM3hUR1BxL05WeWM4Q1ZYaklDSE1G?= =?utf-8?B?SjBPc1FXL2NHeWFEUGNBWVdJOTJuNzh4ZlA5VXRrTGYvcVgrcFYxT1dlZGdL?= =?utf-8?B?S1Z2TW5HSGdDRGRVR21sQ01MQzVIeWlzMkt0ZnI5N290YUhmNVJQQUJhd1JI?= =?utf-8?B?QzBzUmxiTTNMcGk1cEwxUjhDS1BOZzFiUVYxckhnSDRHZWtYeCsvRXZ1eGRk?= =?utf-8?B?L2FZeDJmRTJtRkFUVkw0bHVYZE1JZTRNdDFBMFdvdE5QRmlERFVaZmhxZWs5?= =?utf-8?B?SXRTQmh2OWtjREcxRUk2MVJUV2pOb3l3MzMzVU9iVjE0UTdEcy9iay9DazYv?= =?utf-8?B?QUdCcjQyVUlxMjNxbm5jMWFYazk1L1gzMFpxZ213aFZMWjVPbTR3OFR0ejAy?= =?utf-8?B?NGxUbEFodnl5NlA3L1VzaEdVYzZnQmlPcVFyanQ3MHQ4OVo2eldnVmx2MUFS?= =?utf-8?B?czd0cUoxU0VEVmx6RFo2YTdKZnhLdXhsczd6cG4ya1ZCYldjdWN0WUJJT0Ez?= =?utf-8?B?b21nVzdDQUtIbDJuZWNuK2ZoRzdEcjlZN200S0c2QlpQc3NPa3I5U0xMa08z?= =?utf-8?B?RC91Z2s4TklZOWU3NUhHb3FuUWE2M2NuTjZKVHNPQlBwVXBNZWhlUi8wbmVT?= =?utf-8?B?THpxYW1xbDdOT2tXOUpodExYeHk4emlsRzFRM0ZERmxUbXd6RTlMZUJNeGpQ?= =?utf-8?B?NTBkNTVZQ3FwdGN1djhiM2dudk1wdDVyeXNKVGF3VXpqazZKZ05KaHgxclQr?= =?utf-8?B?T0xHOVlLZEdVT1RvZUVXd3M5cC93bmdSUTAzNnNzTnNRZExHSllsR3NOSUdR?= =?utf-8?B?ZktuUGJqQkVESFVFNC84eUpiQU5BRlNtVTZMWXdyWXdObDBsK253Vi9EeElG?= =?utf-8?B?MEc1WHNSL0pleWVhMXJWc0FiS29hTXZCRWVJMm14N3pnZTRtOHlVT0dzbFZI?= =?utf-8?B?M1FxbWhZdGhZWjB2Sk1nZjN5bUZ0U2FrNzhaL0dzYnpkSTVrSHlFLzdKOHlU?= =?utf-8?B?UXlXblBEMUF1RE9OMDZUQ21yYURBS01xZzdnWVdsNXhlUXNNenNtNm5LSzcz?= =?utf-8?B?ZnEwRHhiaFI4V0ZyNkpkNWtNQVVKdEVmTEphMnM4L28xMGY2WTd2VU9UR2VC?= =?utf-8?Q?fs55vno1i3VkV6a0=3D?= X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: f2cb41e9-6f16-4f67-7d8b-08da10d0c7bd X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2022 15:36:51.8391 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: AKgUdd0FX9oVn3Tlxr3F+VtfbJpL6SxecY6VnTTZ63eQ/oJ+FfWvR3K+R637IoLaSlF5Ufxy/SlafW1OgOE8HQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR03MB6427 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.5 at phobos.denx.de X-Virus-Status: Clean On 3/28/22 2:35 AM, Simon Glass wrote: > Hi Sean, > > On Tue, 22 Mar 2022 at 15:00, Sean Anderson wrote: >> >> This adds a serial driver which uses semihosting calls to read and write >> to the host's console. For convenience, if CONFIG_DM_SERIAL is enabled, >> we will instantiate a serial driver. This allows users to enable this >> driver (which has no physical device) without modifying their device >> trees or board files. We also implement a non-DM driver for SPL, or for >> much faster output in U-Boot proper. >> >> There are three ways to print to the console: >> >> Method Baud >> ================== ===== >> smh_putc in a loop 170 >> smh_puts 1600 >> smh_write with :tt 20000 >> ================== ===== >> >> These speeds were measured using a 175 character message with a J-Link >> adapter. For reference, U-Boot typically prints around 2700 characters >> during boot on this board. There are two major factors affecting the >> speed of these functions. First, each breakpoint incurs a delay. Second, >> each debugger memory transaction incurs a delay. smh_putc has a >> breakpoint and memory transaction for every character. smh_puts has one >> breakpoint, but still has to use a transaction for every character. This >> is because we don't know the length up front, so OpenOCD has to check if >> each character is nul. smh_write has only one breakpoint and one memory >> transfer. >> >> DM serial drivers can only implement a putc interface, so we are stuck >> with the slowest API. Non-DM drivers can implement puts, which is vastly >> more efficient. When the driver starts up, we try to open :tt. Since >> this is an extension, this may fail. If it does, we fall back to >> smh_puts. We don't check :semihosting-features, since there are >> nonconforming implementations (OpenOCD) which don't implement it (but >> *do* implement :tt). >> >> Some semihosting implementations (QEMU) don't handle READC properly. To >> work around this, we try to use open/read (much like for stdin) if >> possible. >> >> There is no non-blocking I/O available, so we don't implement pending. >> This will cause __serial_tstc to always return true. If >> CONFIG_SERIAL_RX_BUFFER is enabled, _serial_tstc will try and read >> characters forever. To avoid this, we depend on this config being >> disabled. >> >> Signed-off-by: Sean Anderson >> --- >> >> (no changes since v2) >> >> Changes in v2: >> - Fix baud numbers being off by 10 >> - Fix typos in commit message >> - Rename non-DM driver struct to match format of other drivers >> >> drivers/serial/Kconfig | 22 +++++ >> drivers/serial/Makefile | 1 + >> drivers/serial/serial.c | 2 + >> drivers/serial/serial_semihosting.c | 147 ++++++++++++++++++++++++++++ >> include/serial.h | 1 + >> 5 files changed, 173 insertions(+) >> create mode 100644 drivers/serial/serial_semihosting.c >> > > Reviewed-by: Simon Glass > > But please can we drop the non-DM support? Unfortunately, Layerscape does not support DM serial. I tried converting it, but I ran into some unusual aborts. At the moment, I don't have time to debug things further. And I thought that non-DM serial was ok for SPL? --Sean